package ms.unicorn.dsl.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import ms.unicorn.dsl.services.UnicornDSLGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
@SuppressWarnings("all")
public class InternalUnicornDSLParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_INT", "RULE_HEX", "RULE_FLOAT", "RULE_VERBATIM_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'library'", "';'", "'language'", "'('", "','", "')'", "'conversion'", "'include'", "'<'", "'>'", "'import'", "'namespace'", "'{'", "'}'", "'entity'", "'relation'", "'diagram'", "':'", "'theme'", "'rule'", "'['", "']'", "'='", "'field'", "'use'", "'as'", "'const'", "'var'", "'function'", "'...'", "'+='", "'-='", "'*='", "'/='", "'&&'", "'||'", "'<='", "'>='", "'<>'", "'!='", "'=='", "'+'", "'-'", "'|'", "'&'", "'*'", "'^'", "'/'", "'%'", "'<<'", "'>>'", "'!'", "'++'", "'--'", "'.'", "'?.'", "'list'", "'map'", "'frame'", "'struct'", "'extensible'", "'readonly'", "'return'", "'break'", "'continue'", "'eval'", "'?'", "'this'", "'__args'", "'null'", "'true'", "'false'", "'new'", "'init '", "'if'", "'else'", "'while'", "'for'", "'::'", "'::*'"
    };
    public static final int RULE_ID=4;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=13;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int EOF=-1;
    public static final int T__93=93;
    public static final int T__19=19;
    public static final int T__91=91;
    public static final int T__92=92;
    public static final int RULE_HEX=7;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__90=90;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__14=14;
    public static final int T__80=80;
    public static final int T__81=81;
    public static final int T__82=82;
    public static final int T__83=83;
    public static final int T__85=85;
    public static final int T__84=84;
    public static final int T__87=87;
    public static final int T__86=86;
    public static final int T__89=89;
    public static final int T__88=88;
    public static final int RULE_ML_COMMENT=10;
    public static final int RULE_STRING=5;
    public static final int T__71=71;
    public static final int T__72=72;
    public static final int T__70=70;
    public static final int T__76=76;
    public static final int T__75=75;
    public static final int T__74=74;
    public static final int T__73=73;
    public static final int T__79=79;
    public static final int T__78=78;
    public static final int T__77=77;
    public static final int T__68=68;
    public static final int T__69=69;
    public static final int T__66=66;
    public static final int T__67=67;
    public static final int T__64=64;
    public static final int T__65=65;
    public static final int RULE_VERBATIM_STRING=9;
    public static final int T__62=62;
    public static final int T__63=63;
    public static final int T__61=61;
    public static final int T__60=60;
    public static final int T__55=55;
    public static final int T__56=56;
    public static final int T__57=57;
    public static final int T__58=58;
    public static final int T__51=51;
    public static final int T__52=52;
    public static final int T__53=53;
    public static final int T__54=54;
    public static final int T__59=59;
    public static final int RULE_INT=6;
    public static final int T__50=50;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int RULE_FLOAT=8;
    public static final int RULE_SL_COMMENT=11;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_WS=12;

    // delegates
    // delegators


        public InternalUnicornDSLParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalUnicornDSLParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalUnicornDSLParser.tokenNames; }
    public String getGrammarFileName() { return "../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g"; }



     	private UnicornDSLGrammarAccess grammarAccess;
     	
        public InternalUnicornDSLParser(TokenStream input, UnicornDSLGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Module";	
       	}
       	
       	@Override
       	protected UnicornDSLGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleModule"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:67:1: entryRuleModule returns [EObject current=null] : iv_ruleModule= ruleModule EOF ;
    public final EObject entryRuleModule() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModule = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:68:2: (iv_ruleModule= ruleModule EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:69:2: iv_ruleModule= ruleModule EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getModuleRule()); 
            }
            pushFollow(FOLLOW_ruleModule_in_entryRuleModule75);
            iv_ruleModule=ruleModule();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleModule; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleModule85); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleModule"


    // $ANTLR start "ruleModule"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:76:1: ruleModule returns [EObject current=null] : (this_UnicornLibrary_0= ruleUnicornLibrary | this_UnicornLanguage_1= ruleUnicornLanguage | this_UnicornConversion_2= ruleUnicornConversion ) ;
    public final EObject ruleModule() throws RecognitionException {
        EObject current = null;

        EObject this_UnicornLibrary_0 = null;

        EObject this_UnicornLanguage_1 = null;

        EObject this_UnicornConversion_2 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:79:28: ( (this_UnicornLibrary_0= ruleUnicornLibrary | this_UnicornLanguage_1= ruleUnicornLanguage | this_UnicornConversion_2= ruleUnicornConversion ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:80:1: (this_UnicornLibrary_0= ruleUnicornLibrary | this_UnicornLanguage_1= ruleUnicornLanguage | this_UnicornConversion_2= ruleUnicornConversion )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:80:1: (this_UnicornLibrary_0= ruleUnicornLibrary | this_UnicornLanguage_1= ruleUnicornLanguage | this_UnicornConversion_2= ruleUnicornConversion )
            int alt1=3;
            switch ( input.LA(1) ) {
            case 14:
                {
                alt1=1;
                }
                break;
            case 16:
                {
                alt1=2;
                }
                break;
            case 20:
                {
                alt1=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 1, 0, input);

                throw nvae;
            }

            switch (alt1) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:81:5: this_UnicornLibrary_0= ruleUnicornLibrary
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getModuleAccess().getUnicornLibraryParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleUnicornLibrary_in_ruleModule132);
                    this_UnicornLibrary_0=ruleUnicornLibrary();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_UnicornLibrary_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:91:5: this_UnicornLanguage_1= ruleUnicornLanguage
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getModuleAccess().getUnicornLanguageParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleUnicornLanguage_in_ruleModule159);
                    this_UnicornLanguage_1=ruleUnicornLanguage();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_UnicornLanguage_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:101:5: this_UnicornConversion_2= ruleUnicornConversion
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getModuleAccess().getUnicornConversionParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleUnicornConversion_in_ruleModule186);
                    this_UnicornConversion_2=ruleUnicornConversion();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_UnicornConversion_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleModule"


    // $ANTLR start "entryRuleUnicornLibrary"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:117:1: entryRuleUnicornLibrary returns [EObject current=null] : iv_ruleUnicornLibrary= ruleUnicornLibrary EOF ;
    public final EObject entryRuleUnicornLibrary() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUnicornLibrary = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:118:2: (iv_ruleUnicornLibrary= ruleUnicornLibrary EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:119:2: iv_ruleUnicornLibrary= ruleUnicornLibrary EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getUnicornLibraryRule()); 
            }
            pushFollow(FOLLOW_ruleUnicornLibrary_in_entryRuleUnicornLibrary221);
            iv_ruleUnicornLibrary=ruleUnicornLibrary();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUnicornLibrary; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleUnicornLibrary231); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUnicornLibrary"


    // $ANTLR start "ruleUnicornLibrary"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:126:1: ruleUnicornLibrary returns [EObject current=null] : (otherlv_0= 'library' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ';' ( (lv_include_3_0= ruleIncludeStatement ) )* ( ( (lv_imports_4_0= ruleImportStatement ) ) | ( (lv_elements_5_0= ruleIdentifiedElement ) ) | ( (lv_elements_6_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespace_7_0= ruleNamespace ) ) )* ) ;
    public final EObject ruleUnicornLibrary() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        EObject lv_include_3_0 = null;

        EObject lv_imports_4_0 = null;

        EObject lv_elements_5_0 = null;

        EObject lv_elements_6_0 = null;

        EObject lv_namespace_7_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:129:28: ( (otherlv_0= 'library' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ';' ( (lv_include_3_0= ruleIncludeStatement ) )* ( ( (lv_imports_4_0= ruleImportStatement ) ) | ( (lv_elements_5_0= ruleIdentifiedElement ) ) | ( (lv_elements_6_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespace_7_0= ruleNamespace ) ) )* ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:130:1: (otherlv_0= 'library' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ';' ( (lv_include_3_0= ruleIncludeStatement ) )* ( ( (lv_imports_4_0= ruleImportStatement ) ) | ( (lv_elements_5_0= ruleIdentifiedElement ) ) | ( (lv_elements_6_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespace_7_0= ruleNamespace ) ) )* )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:130:1: (otherlv_0= 'library' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ';' ( (lv_include_3_0= ruleIncludeStatement ) )* ( ( (lv_imports_4_0= ruleImportStatement ) ) | ( (lv_elements_5_0= ruleIdentifiedElement ) ) | ( (lv_elements_6_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespace_7_0= ruleNamespace ) ) )* )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:130:3: otherlv_0= 'library' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ';' ( (lv_include_3_0= ruleIncludeStatement ) )* ( ( (lv_imports_4_0= ruleImportStatement ) ) | ( (lv_elements_5_0= ruleIdentifiedElement ) ) | ( (lv_elements_6_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespace_7_0= ruleNamespace ) ) )*
            {
            otherlv_0=(Token)match(input,14,FOLLOW_14_in_ruleUnicornLibrary268); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getUnicornLibraryAccess().getLibraryKeyword_0());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:134:1: ( (lv_name_1_0= RULE_ID ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:135:1: (lv_name_1_0= RULE_ID )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:135:1: (lv_name_1_0= RULE_ID )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:136:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleUnicornLibrary285); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_1_0, grammarAccess.getUnicornLibraryAccess().getNameIDTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getUnicornLibraryRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,15,FOLLOW_15_in_ruleUnicornLibrary302); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getUnicornLibraryAccess().getSemicolonKeyword_2());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:156:1: ( (lv_include_3_0= ruleIncludeStatement ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==21) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:157:1: (lv_include_3_0= ruleIncludeStatement )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:157:1: (lv_include_3_0= ruleIncludeStatement )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:158:3: lv_include_3_0= ruleIncludeStatement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getUnicornLibraryAccess().getIncludeIncludeStatementParserRuleCall_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleIncludeStatement_in_ruleUnicornLibrary323);
            	    lv_include_3_0=ruleIncludeStatement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getUnicornLibraryRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"include",
            	              		lv_include_3_0, 
            	              		"IncludeStatement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:174:3: ( ( (lv_imports_4_0= ruleImportStatement ) ) | ( (lv_elements_5_0= ruleIdentifiedElement ) ) | ( (lv_elements_6_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespace_7_0= ruleNamespace ) ) )*
            loop3:
            do {
                int alt3=5;
                switch ( input.LA(1) ) {
                case 24:
                    {
                    alt3=1;
                    }
                    break;
                case 28:
                case 29:
                case 30:
                case 32:
                case 42:
                    {
                    alt3=2;
                    }
                    break;
                case 38:
                case 40:
                case 41:
                    {
                    alt3=3;
                    }
                    break;
                case 25:
                    {
                    alt3=4;
                    }
                    break;

                }

                switch (alt3) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:174:4: ( (lv_imports_4_0= ruleImportStatement ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:174:4: ( (lv_imports_4_0= ruleImportStatement ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:175:1: (lv_imports_4_0= ruleImportStatement )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:175:1: (lv_imports_4_0= ruleImportStatement )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:176:3: lv_imports_4_0= ruleImportStatement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getUnicornLibraryAccess().getImportsImportStatementParserRuleCall_4_0_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleImportStatement_in_ruleUnicornLibrary346);
            	    lv_imports_4_0=ruleImportStatement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getUnicornLibraryRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"imports",
            	              		lv_imports_4_0, 
            	              		"ImportStatement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:193:6: ( (lv_elements_5_0= ruleIdentifiedElement ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:193:6: ( (lv_elements_5_0= ruleIdentifiedElement ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:194:1: (lv_elements_5_0= ruleIdentifiedElement )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:194:1: (lv_elements_5_0= ruleIdentifiedElement )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:195:3: lv_elements_5_0= ruleIdentifiedElement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getUnicornLibraryAccess().getElementsIdentifiedElementParserRuleCall_4_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleIdentifiedElement_in_ruleUnicornLibrary373);
            	    lv_elements_5_0=ruleIdentifiedElement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getUnicornLibraryRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"elements",
            	              		lv_elements_5_0, 
            	              		"IdentifiedElement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:212:6: ( (lv_elements_6_0= ruleCommaEndedIdentifiedElement ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:212:6: ( (lv_elements_6_0= ruleCommaEndedIdentifiedElement ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:213:1: (lv_elements_6_0= ruleCommaEndedIdentifiedElement )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:213:1: (lv_elements_6_0= ruleCommaEndedIdentifiedElement )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:214:3: lv_elements_6_0= ruleCommaEndedIdentifiedElement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getUnicornLibraryAccess().getElementsCommaEndedIdentifiedElementParserRuleCall_4_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleCommaEndedIdentifiedElement_in_ruleUnicornLibrary400);
            	    lv_elements_6_0=ruleCommaEndedIdentifiedElement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getUnicornLibraryRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"elements",
            	              		lv_elements_6_0, 
            	              		"CommaEndedIdentifiedElement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;
            	case 4 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:231:6: ( (lv_namespace_7_0= ruleNamespace ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:231:6: ( (lv_namespace_7_0= ruleNamespace ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:232:1: (lv_namespace_7_0= ruleNamespace )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:232:1: (lv_namespace_7_0= ruleNamespace )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:233:3: lv_namespace_7_0= ruleNamespace
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getUnicornLibraryAccess().getNamespaceNamespaceParserRuleCall_4_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleNamespace_in_ruleUnicornLibrary427);
            	    lv_namespace_7_0=ruleNamespace();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getUnicornLibraryRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"namespace",
            	              		lv_namespace_7_0, 
            	              		"Namespace");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUnicornLibrary"


    // $ANTLR start "entryRuleUnicornLanguage"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:257:1: entryRuleUnicornLanguage returns [EObject current=null] : iv_ruleUnicornLanguage= ruleUnicornLanguage EOF ;
    public final EObject entryRuleUnicornLanguage() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUnicornLanguage = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:258:2: (iv_ruleUnicornLanguage= ruleUnicornLanguage EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:259:2: iv_ruleUnicornLanguage= ruleUnicornLanguage EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getUnicornLanguageRule()); 
            }
            pushFollow(FOLLOW_ruleUnicornLanguage_in_entryRuleUnicornLanguage465);
            iv_ruleUnicornLanguage=ruleUnicornLanguage();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUnicornLanguage; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleUnicornLanguage475); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUnicornLanguage"


    // $ANTLR start "ruleUnicornLanguage"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:266:1: ruleUnicornLanguage returns [EObject current=null] : (otherlv_0= 'language' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '(' ( (lv_Properties_3_0= ruleNamedProperty ) ) (otherlv_4= ',' ( (lv_Properties_5_0= ruleNamedProperty ) ) )* otherlv_6= ')' )? otherlv_7= ';' ( (lv_include_8_0= ruleIncludeStatement ) )* ( ( (lv_imports_9_0= ruleImportStatement ) ) | ( (lv_elements_10_0= ruleIdentifiedElement ) ) | ( (lv_elements_11_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespace_12_0= ruleNamespace ) ) )* ) ;
    public final EObject ruleUnicornLanguage() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        EObject lv_Properties_3_0 = null;

        EObject lv_Properties_5_0 = null;

        EObject lv_include_8_0 = null;

        EObject lv_imports_9_0 = null;

        EObject lv_elements_10_0 = null;

        EObject lv_elements_11_0 = null;

        EObject lv_namespace_12_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:269:28: ( (otherlv_0= 'language' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '(' ( (lv_Properties_3_0= ruleNamedProperty ) ) (otherlv_4= ',' ( (lv_Properties_5_0= ruleNamedProperty ) ) )* otherlv_6= ')' )? otherlv_7= ';' ( (lv_include_8_0= ruleIncludeStatement ) )* ( ( (lv_imports_9_0= ruleImportStatement ) ) | ( (lv_elements_10_0= ruleIdentifiedElement ) ) | ( (lv_elements_11_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespace_12_0= ruleNamespace ) ) )* ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:270:1: (otherlv_0= 'language' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '(' ( (lv_Properties_3_0= ruleNamedProperty ) ) (otherlv_4= ',' ( (lv_Properties_5_0= ruleNamedProperty ) ) )* otherlv_6= ')' )? otherlv_7= ';' ( (lv_include_8_0= ruleIncludeStatement ) )* ( ( (lv_imports_9_0= ruleImportStatement ) ) | ( (lv_elements_10_0= ruleIdentifiedElement ) ) | ( (lv_elements_11_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespace_12_0= ruleNamespace ) ) )* )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:270:1: (otherlv_0= 'language' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '(' ( (lv_Properties_3_0= ruleNamedProperty ) ) (otherlv_4= ',' ( (lv_Properties_5_0= ruleNamedProperty ) ) )* otherlv_6= ')' )? otherlv_7= ';' ( (lv_include_8_0= ruleIncludeStatement ) )* ( ( (lv_imports_9_0= ruleImportStatement ) ) | ( (lv_elements_10_0= ruleIdentifiedElement ) ) | ( (lv_elements_11_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespace_12_0= ruleNamespace ) ) )* )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:270:3: otherlv_0= 'language' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '(' ( (lv_Properties_3_0= ruleNamedProperty ) ) (otherlv_4= ',' ( (lv_Properties_5_0= ruleNamedProperty ) ) )* otherlv_6= ')' )? otherlv_7= ';' ( (lv_include_8_0= ruleIncludeStatement ) )* ( ( (lv_imports_9_0= ruleImportStatement ) ) | ( (lv_elements_10_0= ruleIdentifiedElement ) ) | ( (lv_elements_11_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespace_12_0= ruleNamespace ) ) )*
            {
            otherlv_0=(Token)match(input,16,FOLLOW_16_in_ruleUnicornLanguage512); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getUnicornLanguageAccess().getLanguageKeyword_0());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:274:1: ( (lv_name_1_0= RULE_ID ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:275:1: (lv_name_1_0= RULE_ID )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:275:1: (lv_name_1_0= RULE_ID )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:276:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleUnicornLanguage529); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_1_0, grammarAccess.getUnicornLanguageAccess().getNameIDTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getUnicornLanguageRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:292:2: (otherlv_2= '(' ( (lv_Properties_3_0= ruleNamedProperty ) ) (otherlv_4= ',' ( (lv_Properties_5_0= ruleNamedProperty ) ) )* otherlv_6= ')' )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==17) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:292:4: otherlv_2= '(' ( (lv_Properties_3_0= ruleNamedProperty ) ) (otherlv_4= ',' ( (lv_Properties_5_0= ruleNamedProperty ) ) )* otherlv_6= ')'
                    {
                    otherlv_2=(Token)match(input,17,FOLLOW_17_in_ruleUnicornLanguage547); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getUnicornLanguageAccess().getLeftParenthesisKeyword_2_0());
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:296:1: ( (lv_Properties_3_0= ruleNamedProperty ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:297:1: (lv_Properties_3_0= ruleNamedProperty )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:297:1: (lv_Properties_3_0= ruleNamedProperty )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:298:3: lv_Properties_3_0= ruleNamedProperty
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getUnicornLanguageAccess().getPropertiesNamedPropertyParserRuleCall_2_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleNamedProperty_in_ruleUnicornLanguage568);
                    lv_Properties_3_0=ruleNamedProperty();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getUnicornLanguageRule());
                      	        }
                             		add(
                             			current, 
                             			"Properties",
                              		lv_Properties_3_0, 
                              		"NamedProperty");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:314:2: (otherlv_4= ',' ( (lv_Properties_5_0= ruleNamedProperty ) ) )*
                    loop4:
                    do {
                        int alt4=2;
                        int LA4_0 = input.LA(1);

                        if ( (LA4_0==18) ) {
                            alt4=1;
                        }


                        switch (alt4) {
                    	case 1 :
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:314:4: otherlv_4= ',' ( (lv_Properties_5_0= ruleNamedProperty ) )
                    	    {
                    	    otherlv_4=(Token)match(input,18,FOLLOW_18_in_ruleUnicornLanguage581); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_4, grammarAccess.getUnicornLanguageAccess().getCommaKeyword_2_2_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:318:1: ( (lv_Properties_5_0= ruleNamedProperty ) )
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:319:1: (lv_Properties_5_0= ruleNamedProperty )
                    	    {
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:319:1: (lv_Properties_5_0= ruleNamedProperty )
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:320:3: lv_Properties_5_0= ruleNamedProperty
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getUnicornLanguageAccess().getPropertiesNamedPropertyParserRuleCall_2_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleNamedProperty_in_ruleUnicornLanguage602);
                    	    lv_Properties_5_0=ruleNamedProperty();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getUnicornLanguageRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"Properties",
                    	              		lv_Properties_5_0, 
                    	              		"NamedProperty");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop4;
                        }
                    } while (true);

                    otherlv_6=(Token)match(input,19,FOLLOW_19_in_ruleUnicornLanguage616); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getUnicornLanguageAccess().getRightParenthesisKeyword_2_3());
                          
                    }

                    }
                    break;

            }

            otherlv_7=(Token)match(input,15,FOLLOW_15_in_ruleUnicornLanguage630); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getUnicornLanguageAccess().getSemicolonKeyword_3());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:344:1: ( (lv_include_8_0= ruleIncludeStatement ) )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==21) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:345:1: (lv_include_8_0= ruleIncludeStatement )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:345:1: (lv_include_8_0= ruleIncludeStatement )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:346:3: lv_include_8_0= ruleIncludeStatement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getUnicornLanguageAccess().getIncludeIncludeStatementParserRuleCall_4_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleIncludeStatement_in_ruleUnicornLanguage651);
            	    lv_include_8_0=ruleIncludeStatement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getUnicornLanguageRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"include",
            	              		lv_include_8_0, 
            	              		"IncludeStatement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:362:3: ( ( (lv_imports_9_0= ruleImportStatement ) ) | ( (lv_elements_10_0= ruleIdentifiedElement ) ) | ( (lv_elements_11_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespace_12_0= ruleNamespace ) ) )*
            loop7:
            do {
                int alt7=5;
                switch ( input.LA(1) ) {
                case 24:
                    {
                    alt7=1;
                    }
                    break;
                case 28:
                case 29:
                case 30:
                case 32:
                case 42:
                    {
                    alt7=2;
                    }
                    break;
                case 38:
                case 40:
                case 41:
                    {
                    alt7=3;
                    }
                    break;
                case 25:
                    {
                    alt7=4;
                    }
                    break;

                }

                switch (alt7) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:362:4: ( (lv_imports_9_0= ruleImportStatement ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:362:4: ( (lv_imports_9_0= ruleImportStatement ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:363:1: (lv_imports_9_0= ruleImportStatement )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:363:1: (lv_imports_9_0= ruleImportStatement )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:364:3: lv_imports_9_0= ruleImportStatement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getUnicornLanguageAccess().getImportsImportStatementParserRuleCall_5_0_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleImportStatement_in_ruleUnicornLanguage674);
            	    lv_imports_9_0=ruleImportStatement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getUnicornLanguageRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"imports",
            	              		lv_imports_9_0, 
            	              		"ImportStatement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:381:6: ( (lv_elements_10_0= ruleIdentifiedElement ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:381:6: ( (lv_elements_10_0= ruleIdentifiedElement ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:382:1: (lv_elements_10_0= ruleIdentifiedElement )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:382:1: (lv_elements_10_0= ruleIdentifiedElement )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:383:3: lv_elements_10_0= ruleIdentifiedElement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getUnicornLanguageAccess().getElementsIdentifiedElementParserRuleCall_5_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleIdentifiedElement_in_ruleUnicornLanguage701);
            	    lv_elements_10_0=ruleIdentifiedElement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getUnicornLanguageRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"elements",
            	              		lv_elements_10_0, 
            	              		"IdentifiedElement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:400:6: ( (lv_elements_11_0= ruleCommaEndedIdentifiedElement ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:400:6: ( (lv_elements_11_0= ruleCommaEndedIdentifiedElement ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:401:1: (lv_elements_11_0= ruleCommaEndedIdentifiedElement )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:401:1: (lv_elements_11_0= ruleCommaEndedIdentifiedElement )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:402:3: lv_elements_11_0= ruleCommaEndedIdentifiedElement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getUnicornLanguageAccess().getElementsCommaEndedIdentifiedElementParserRuleCall_5_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleCommaEndedIdentifiedElement_in_ruleUnicornLanguage728);
            	    lv_elements_11_0=ruleCommaEndedIdentifiedElement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getUnicornLanguageRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"elements",
            	              		lv_elements_11_0, 
            	              		"CommaEndedIdentifiedElement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;
            	case 4 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:419:6: ( (lv_namespace_12_0= ruleNamespace ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:419:6: ( (lv_namespace_12_0= ruleNamespace ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:420:1: (lv_namespace_12_0= ruleNamespace )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:420:1: (lv_namespace_12_0= ruleNamespace )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:421:3: lv_namespace_12_0= ruleNamespace
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getUnicornLanguageAccess().getNamespaceNamespaceParserRuleCall_5_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleNamespace_in_ruleUnicornLanguage755);
            	    lv_namespace_12_0=ruleNamespace();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getUnicornLanguageRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"namespace",
            	              		lv_namespace_12_0, 
            	              		"Namespace");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUnicornLanguage"


    // $ANTLR start "entryRuleUnicornConversion"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:445:1: entryRuleUnicornConversion returns [EObject current=null] : iv_ruleUnicornConversion= ruleUnicornConversion EOF ;
    public final EObject entryRuleUnicornConversion() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUnicornConversion = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:446:2: (iv_ruleUnicornConversion= ruleUnicornConversion EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:447:2: iv_ruleUnicornConversion= ruleUnicornConversion EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getUnicornConversionRule()); 
            }
            pushFollow(FOLLOW_ruleUnicornConversion_in_entryRuleUnicornConversion793);
            iv_ruleUnicornConversion=ruleUnicornConversion();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUnicornConversion; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleUnicornConversion803); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUnicornConversion"


    // $ANTLR start "ruleUnicornConversion"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:454:1: ruleUnicornConversion returns [EObject current=null] : (otherlv_0= 'conversion' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ';' ( (lv_include_3_0= ruleIncludeStatement ) )* ( ( (lv_imports_4_0= ruleImportStatement ) ) | ( ( (lv_elements_5_1= ruleXFunctionDeclaration | lv_elements_5_2= ruleConversionScheme ) ) ) | ( (lv_elements_6_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespace_7_0= ruleNamespace ) ) )* ) ;
    public final EObject ruleUnicornConversion() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        EObject lv_include_3_0 = null;

        EObject lv_imports_4_0 = null;

        EObject lv_elements_5_1 = null;

        EObject lv_elements_5_2 = null;

        EObject lv_elements_6_0 = null;

        EObject lv_namespace_7_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:457:28: ( (otherlv_0= 'conversion' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ';' ( (lv_include_3_0= ruleIncludeStatement ) )* ( ( (lv_imports_4_0= ruleImportStatement ) ) | ( ( (lv_elements_5_1= ruleXFunctionDeclaration | lv_elements_5_2= ruleConversionScheme ) ) ) | ( (lv_elements_6_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespace_7_0= ruleNamespace ) ) )* ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:458:1: (otherlv_0= 'conversion' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ';' ( (lv_include_3_0= ruleIncludeStatement ) )* ( ( (lv_imports_4_0= ruleImportStatement ) ) | ( ( (lv_elements_5_1= ruleXFunctionDeclaration | lv_elements_5_2= ruleConversionScheme ) ) ) | ( (lv_elements_6_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespace_7_0= ruleNamespace ) ) )* )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:458:1: (otherlv_0= 'conversion' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ';' ( (lv_include_3_0= ruleIncludeStatement ) )* ( ( (lv_imports_4_0= ruleImportStatement ) ) | ( ( (lv_elements_5_1= ruleXFunctionDeclaration | lv_elements_5_2= ruleConversionScheme ) ) ) | ( (lv_elements_6_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespace_7_0= ruleNamespace ) ) )* )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:458:3: otherlv_0= 'conversion' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ';' ( (lv_include_3_0= ruleIncludeStatement ) )* ( ( (lv_imports_4_0= ruleImportStatement ) ) | ( ( (lv_elements_5_1= ruleXFunctionDeclaration | lv_elements_5_2= ruleConversionScheme ) ) ) | ( (lv_elements_6_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespace_7_0= ruleNamespace ) ) )*
            {
            otherlv_0=(Token)match(input,20,FOLLOW_20_in_ruleUnicornConversion840); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getUnicornConversionAccess().getConversionKeyword_0());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:462:1: ( (lv_name_1_0= RULE_ID ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:463:1: (lv_name_1_0= RULE_ID )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:463:1: (lv_name_1_0= RULE_ID )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:464:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleUnicornConversion857); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_1_0, grammarAccess.getUnicornConversionAccess().getNameIDTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getUnicornConversionRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,15,FOLLOW_15_in_ruleUnicornConversion874); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getUnicornConversionAccess().getSemicolonKeyword_2());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:484:1: ( (lv_include_3_0= ruleIncludeStatement ) )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( (LA8_0==21) ) {
                    alt8=1;
                }


                switch (alt8) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:485:1: (lv_include_3_0= ruleIncludeStatement )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:485:1: (lv_include_3_0= ruleIncludeStatement )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:486:3: lv_include_3_0= ruleIncludeStatement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getUnicornConversionAccess().getIncludeIncludeStatementParserRuleCall_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleIncludeStatement_in_ruleUnicornConversion895);
            	    lv_include_3_0=ruleIncludeStatement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getUnicornConversionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"include",
            	              		lv_include_3_0, 
            	              		"IncludeStatement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop8;
                }
            } while (true);

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:502:3: ( ( (lv_imports_4_0= ruleImportStatement ) ) | ( ( (lv_elements_5_1= ruleXFunctionDeclaration | lv_elements_5_2= ruleConversionScheme ) ) ) | ( (lv_elements_6_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespace_7_0= ruleNamespace ) ) )*
            loop10:
            do {
                int alt10=5;
                switch ( input.LA(1) ) {
                case 24:
                    {
                    alt10=1;
                    }
                    break;
                case 33:
                case 42:
                    {
                    alt10=2;
                    }
                    break;
                case 38:
                case 40:
                case 41:
                    {
                    alt10=3;
                    }
                    break;
                case 25:
                    {
                    alt10=4;
                    }
                    break;

                }

                switch (alt10) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:502:4: ( (lv_imports_4_0= ruleImportStatement ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:502:4: ( (lv_imports_4_0= ruleImportStatement ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:503:1: (lv_imports_4_0= ruleImportStatement )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:503:1: (lv_imports_4_0= ruleImportStatement )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:504:3: lv_imports_4_0= ruleImportStatement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getUnicornConversionAccess().getImportsImportStatementParserRuleCall_4_0_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleImportStatement_in_ruleUnicornConversion918);
            	    lv_imports_4_0=ruleImportStatement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getUnicornConversionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"imports",
            	              		lv_imports_4_0, 
            	              		"ImportStatement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:521:6: ( ( (lv_elements_5_1= ruleXFunctionDeclaration | lv_elements_5_2= ruleConversionScheme ) ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:521:6: ( ( (lv_elements_5_1= ruleXFunctionDeclaration | lv_elements_5_2= ruleConversionScheme ) ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:522:1: ( (lv_elements_5_1= ruleXFunctionDeclaration | lv_elements_5_2= ruleConversionScheme ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:522:1: ( (lv_elements_5_1= ruleXFunctionDeclaration | lv_elements_5_2= ruleConversionScheme ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:523:1: (lv_elements_5_1= ruleXFunctionDeclaration | lv_elements_5_2= ruleConversionScheme )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:523:1: (lv_elements_5_1= ruleXFunctionDeclaration | lv_elements_5_2= ruleConversionScheme )
            	    int alt9=2;
            	    int LA9_0 = input.LA(1);

            	    if ( (LA9_0==42) ) {
            	        alt9=1;
            	    }
            	    else if ( (LA9_0==33) ) {
            	        alt9=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 9, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt9) {
            	        case 1 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:524:3: lv_elements_5_1= ruleXFunctionDeclaration
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getUnicornConversionAccess().getElementsXFunctionDeclarationParserRuleCall_4_1_0_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_ruleXFunctionDeclaration_in_ruleUnicornConversion947);
            	            lv_elements_5_1=ruleXFunctionDeclaration();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getUnicornConversionRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"elements",
            	                      		lv_elements_5_1, 
            	                      		"XFunctionDeclaration");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:539:8: lv_elements_5_2= ruleConversionScheme
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getUnicornConversionAccess().getElementsConversionSchemeParserRuleCall_4_1_0_1()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_ruleConversionScheme_in_ruleUnicornConversion966);
            	            lv_elements_5_2=ruleConversionScheme();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getUnicornConversionRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"elements",
            	                      		lv_elements_5_2, 
            	                      		"ConversionScheme");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:558:6: ( (lv_elements_6_0= ruleCommaEndedIdentifiedElement ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:558:6: ( (lv_elements_6_0= ruleCommaEndedIdentifiedElement ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:559:1: (lv_elements_6_0= ruleCommaEndedIdentifiedElement )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:559:1: (lv_elements_6_0= ruleCommaEndedIdentifiedElement )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:560:3: lv_elements_6_0= ruleCommaEndedIdentifiedElement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getUnicornConversionAccess().getElementsCommaEndedIdentifiedElementParserRuleCall_4_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleCommaEndedIdentifiedElement_in_ruleUnicornConversion996);
            	    lv_elements_6_0=ruleCommaEndedIdentifiedElement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getUnicornConversionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"elements",
            	              		lv_elements_6_0, 
            	              		"CommaEndedIdentifiedElement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;
            	case 4 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:577:6: ( (lv_namespace_7_0= ruleNamespace ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:577:6: ( (lv_namespace_7_0= ruleNamespace ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:578:1: (lv_namespace_7_0= ruleNamespace )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:578:1: (lv_namespace_7_0= ruleNamespace )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:579:3: lv_namespace_7_0= ruleNamespace
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getUnicornConversionAccess().getNamespaceNamespaceParserRuleCall_4_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleNamespace_in_ruleUnicornConversion1023);
            	    lv_namespace_7_0=ruleNamespace();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getUnicornConversionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"namespace",
            	              		lv_namespace_7_0, 
            	              		"Namespace");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop10;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUnicornConversion"


    // $ANTLR start "entryRuleIncludeStatement"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:603:1: entryRuleIncludeStatement returns [EObject current=null] : iv_ruleIncludeStatement= ruleIncludeStatement EOF ;
    public final EObject entryRuleIncludeStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIncludeStatement = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:604:2: (iv_ruleIncludeStatement= ruleIncludeStatement EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:605:2: iv_ruleIncludeStatement= ruleIncludeStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIncludeStatementRule()); 
            }
            pushFollow(FOLLOW_ruleIncludeStatement_in_entryRuleIncludeStatement1061);
            iv_ruleIncludeStatement=ruleIncludeStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIncludeStatement; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleIncludeStatement1071); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIncludeStatement"


    // $ANTLR start "ruleIncludeStatement"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:612:1: ruleIncludeStatement returns [EObject current=null] : (otherlv_0= 'include' ( ( ( (lv_importURI_1_1= RULE_STRING | lv_importURI_1_2= ruleDotQualifiedName ) ) ) | ( ( (lv_searchPathUsed_2_0= '<' ) ) ( ( (lv_importURI_3_1= RULE_STRING | lv_importURI_3_2= ruleDotQualifiedName ) ) ) otherlv_4= '>' ) ) (otherlv_5= ';' )? ) ;
    public final EObject ruleIncludeStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_importURI_1_1=null;
        Token lv_searchPathUsed_2_0=null;
        Token lv_importURI_3_1=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        AntlrDatatypeRuleToken lv_importURI_1_2 = null;

        AntlrDatatypeRuleToken lv_importURI_3_2 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:615:28: ( (otherlv_0= 'include' ( ( ( (lv_importURI_1_1= RULE_STRING | lv_importURI_1_2= ruleDotQualifiedName ) ) ) | ( ( (lv_searchPathUsed_2_0= '<' ) ) ( ( (lv_importURI_3_1= RULE_STRING | lv_importURI_3_2= ruleDotQualifiedName ) ) ) otherlv_4= '>' ) ) (otherlv_5= ';' )? ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:616:1: (otherlv_0= 'include' ( ( ( (lv_importURI_1_1= RULE_STRING | lv_importURI_1_2= ruleDotQualifiedName ) ) ) | ( ( (lv_searchPathUsed_2_0= '<' ) ) ( ( (lv_importURI_3_1= RULE_STRING | lv_importURI_3_2= ruleDotQualifiedName ) ) ) otherlv_4= '>' ) ) (otherlv_5= ';' )? )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:616:1: (otherlv_0= 'include' ( ( ( (lv_importURI_1_1= RULE_STRING | lv_importURI_1_2= ruleDotQualifiedName ) ) ) | ( ( (lv_searchPathUsed_2_0= '<' ) ) ( ( (lv_importURI_3_1= RULE_STRING | lv_importURI_3_2= ruleDotQualifiedName ) ) ) otherlv_4= '>' ) ) (otherlv_5= ';' )? )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:616:3: otherlv_0= 'include' ( ( ( (lv_importURI_1_1= RULE_STRING | lv_importURI_1_2= ruleDotQualifiedName ) ) ) | ( ( (lv_searchPathUsed_2_0= '<' ) ) ( ( (lv_importURI_3_1= RULE_STRING | lv_importURI_3_2= ruleDotQualifiedName ) ) ) otherlv_4= '>' ) ) (otherlv_5= ';' )?
            {
            otherlv_0=(Token)match(input,21,FOLLOW_21_in_ruleIncludeStatement1108); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getIncludeStatementAccess().getIncludeKeyword_0());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:620:1: ( ( ( (lv_importURI_1_1= RULE_STRING | lv_importURI_1_2= ruleDotQualifiedName ) ) ) | ( ( (lv_searchPathUsed_2_0= '<' ) ) ( ( (lv_importURI_3_1= RULE_STRING | lv_importURI_3_2= ruleDotQualifiedName ) ) ) otherlv_4= '>' ) )
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( ((LA13_0>=RULE_ID && LA13_0<=RULE_STRING)||LA13_0==16||(LA13_0>=28 && LA13_0<=30)||(LA13_0>=32 && LA13_0<=33)) ) {
                alt13=1;
            }
            else if ( (LA13_0==22) ) {
                alt13=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 13, 0, input);

                throw nvae;
            }
            switch (alt13) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:620:2: ( ( (lv_importURI_1_1= RULE_STRING | lv_importURI_1_2= ruleDotQualifiedName ) ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:620:2: ( ( (lv_importURI_1_1= RULE_STRING | lv_importURI_1_2= ruleDotQualifiedName ) ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:621:1: ( (lv_importURI_1_1= RULE_STRING | lv_importURI_1_2= ruleDotQualifiedName ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:621:1: ( (lv_importURI_1_1= RULE_STRING | lv_importURI_1_2= ruleDotQualifiedName ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:622:1: (lv_importURI_1_1= RULE_STRING | lv_importURI_1_2= ruleDotQualifiedName )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:622:1: (lv_importURI_1_1= RULE_STRING | lv_importURI_1_2= ruleDotQualifiedName )
                    int alt11=2;
                    int LA11_0 = input.LA(1);

                    if ( (LA11_0==RULE_STRING) ) {
                        alt11=1;
                    }
                    else if ( (LA11_0==RULE_ID||LA11_0==16||(LA11_0>=28 && LA11_0<=30)||(LA11_0>=32 && LA11_0<=33)) ) {
                        alt11=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 11, 0, input);

                        throw nvae;
                    }
                    switch (alt11) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:623:3: lv_importURI_1_1= RULE_STRING
                            {
                            lv_importURI_1_1=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleIncludeStatement1128); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              			newLeafNode(lv_importURI_1_1, grammarAccess.getIncludeStatementAccess().getImportURISTRINGTerminalRuleCall_1_0_0_0()); 
                              		
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getIncludeStatementRule());
                              	        }
                                     		setWithLastConsumed(
                                     			current, 
                                     			"importURI",
                                      		lv_importURI_1_1, 
                                      		"STRING");
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:638:8: lv_importURI_1_2= ruleDotQualifiedName
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getIncludeStatementAccess().getImportURIDotQualifiedNameParserRuleCall_1_0_0_1()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleDotQualifiedName_in_ruleIncludeStatement1152);
                            lv_importURI_1_2=ruleDotQualifiedName();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getIncludeStatementRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"importURI",
                                      		lv_importURI_1_2, 
                                      		"DotQualifiedName");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:657:6: ( ( (lv_searchPathUsed_2_0= '<' ) ) ( ( (lv_importURI_3_1= RULE_STRING | lv_importURI_3_2= ruleDotQualifiedName ) ) ) otherlv_4= '>' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:657:6: ( ( (lv_searchPathUsed_2_0= '<' ) ) ( ( (lv_importURI_3_1= RULE_STRING | lv_importURI_3_2= ruleDotQualifiedName ) ) ) otherlv_4= '>' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:657:7: ( (lv_searchPathUsed_2_0= '<' ) ) ( ( (lv_importURI_3_1= RULE_STRING | lv_importURI_3_2= ruleDotQualifiedName ) ) ) otherlv_4= '>'
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:657:7: ( (lv_searchPathUsed_2_0= '<' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:658:1: (lv_searchPathUsed_2_0= '<' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:658:1: (lv_searchPathUsed_2_0= '<' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:659:3: lv_searchPathUsed_2_0= '<'
                    {
                    lv_searchPathUsed_2_0=(Token)match(input,22,FOLLOW_22_in_ruleIncludeStatement1180); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_searchPathUsed_2_0, grammarAccess.getIncludeStatementAccess().getSearchPathUsedLessThanSignKeyword_1_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getIncludeStatementRule());
                      	        }
                             		setWithLastConsumed(current, "searchPathUsed", true, "<");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:672:2: ( ( (lv_importURI_3_1= RULE_STRING | lv_importURI_3_2= ruleDotQualifiedName ) ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:673:1: ( (lv_importURI_3_1= RULE_STRING | lv_importURI_3_2= ruleDotQualifiedName ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:673:1: ( (lv_importURI_3_1= RULE_STRING | lv_importURI_3_2= ruleDotQualifiedName ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:674:1: (lv_importURI_3_1= RULE_STRING | lv_importURI_3_2= ruleDotQualifiedName )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:674:1: (lv_importURI_3_1= RULE_STRING | lv_importURI_3_2= ruleDotQualifiedName )
                    int alt12=2;
                    int LA12_0 = input.LA(1);

                    if ( (LA12_0==RULE_STRING) ) {
                        alt12=1;
                    }
                    else if ( (LA12_0==RULE_ID||LA12_0==16||(LA12_0>=28 && LA12_0<=30)||(LA12_0>=32 && LA12_0<=33)) ) {
                        alt12=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 12, 0, input);

                        throw nvae;
                    }
                    switch (alt12) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:675:3: lv_importURI_3_1= RULE_STRING
                            {
                            lv_importURI_3_1=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleIncludeStatement1212); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              			newLeafNode(lv_importURI_3_1, grammarAccess.getIncludeStatementAccess().getImportURISTRINGTerminalRuleCall_1_1_1_0_0()); 
                              		
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getIncludeStatementRule());
                              	        }
                                     		setWithLastConsumed(
                                     			current, 
                                     			"importURI",
                                      		lv_importURI_3_1, 
                                      		"STRING");
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:690:8: lv_importURI_3_2= ruleDotQualifiedName
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getIncludeStatementAccess().getImportURIDotQualifiedNameParserRuleCall_1_1_1_0_1()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleDotQualifiedName_in_ruleIncludeStatement1236);
                            lv_importURI_3_2=ruleDotQualifiedName();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getIncludeStatementRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"importURI",
                                      		lv_importURI_3_2, 
                                      		"DotQualifiedName");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }

                    otherlv_4=(Token)match(input,23,FOLLOW_23_in_ruleIncludeStatement1251); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getIncludeStatementAccess().getGreaterThanSignKeyword_1_1_2());
                          
                    }

                    }


                    }
                    break;

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:712:3: (otherlv_5= ';' )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==15) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:712:5: otherlv_5= ';'
                    {
                    otherlv_5=(Token)match(input,15,FOLLOW_15_in_ruleIncludeStatement1266); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getIncludeStatementAccess().getSemicolonKeyword_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIncludeStatement"


    // $ANTLR start "entryRuleImportStatement"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:724:1: entryRuleImportStatement returns [EObject current=null] : iv_ruleImportStatement= ruleImportStatement EOF ;
    public final EObject entryRuleImportStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImportStatement = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:725:2: (iv_ruleImportStatement= ruleImportStatement EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:726:2: iv_ruleImportStatement= ruleImportStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getImportStatementRule()); 
            }
            pushFollow(FOLLOW_ruleImportStatement_in_entryRuleImportStatement1304);
            iv_ruleImportStatement=ruleImportStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleImportStatement; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleImportStatement1314); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleImportStatement"


    // $ANTLR start "ruleImportStatement"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:733:1: ruleImportStatement returns [EObject current=null] : (otherlv_0= 'import' ( ( (lv_importedNamespace_1_1= RULE_STRING | lv_importedNamespace_1_2= ruleQualifiedNameStar ) ) ) otherlv_2= ';' ) ;
    public final EObject ruleImportStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_importedNamespace_1_1=null;
        Token otherlv_2=null;
        AntlrDatatypeRuleToken lv_importedNamespace_1_2 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:736:28: ( (otherlv_0= 'import' ( ( (lv_importedNamespace_1_1= RULE_STRING | lv_importedNamespace_1_2= ruleQualifiedNameStar ) ) ) otherlv_2= ';' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:737:1: (otherlv_0= 'import' ( ( (lv_importedNamespace_1_1= RULE_STRING | lv_importedNamespace_1_2= ruleQualifiedNameStar ) ) ) otherlv_2= ';' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:737:1: (otherlv_0= 'import' ( ( (lv_importedNamespace_1_1= RULE_STRING | lv_importedNamespace_1_2= ruleQualifiedNameStar ) ) ) otherlv_2= ';' )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:737:3: otherlv_0= 'import' ( ( (lv_importedNamespace_1_1= RULE_STRING | lv_importedNamespace_1_2= ruleQualifiedNameStar ) ) ) otherlv_2= ';'
            {
            otherlv_0=(Token)match(input,24,FOLLOW_24_in_ruleImportStatement1351); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getImportStatementAccess().getImportKeyword_0());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:741:1: ( ( (lv_importedNamespace_1_1= RULE_STRING | lv_importedNamespace_1_2= ruleQualifiedNameStar ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:742:1: ( (lv_importedNamespace_1_1= RULE_STRING | lv_importedNamespace_1_2= ruleQualifiedNameStar ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:742:1: ( (lv_importedNamespace_1_1= RULE_STRING | lv_importedNamespace_1_2= ruleQualifiedNameStar ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:743:1: (lv_importedNamespace_1_1= RULE_STRING | lv_importedNamespace_1_2= ruleQualifiedNameStar )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:743:1: (lv_importedNamespace_1_1= RULE_STRING | lv_importedNamespace_1_2= ruleQualifiedNameStar )
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==RULE_STRING) ) {
                alt15=1;
            }
            else if ( (LA15_0==RULE_ID) ) {
                alt15=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 15, 0, input);

                throw nvae;
            }
            switch (alt15) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:744:3: lv_importedNamespace_1_1= RULE_STRING
                    {
                    lv_importedNamespace_1_1=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleImportStatement1370); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_importedNamespace_1_1, grammarAccess.getImportStatementAccess().getImportedNamespaceSTRINGTerminalRuleCall_1_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getImportStatementRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"importedNamespace",
                              		lv_importedNamespace_1_1, 
                              		"STRING");
                      	    
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:759:8: lv_importedNamespace_1_2= ruleQualifiedNameStar
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getImportStatementAccess().getImportedNamespaceQualifiedNameStarParserRuleCall_1_0_1()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedNameStar_in_ruleImportStatement1394);
                    lv_importedNamespace_1_2=ruleQualifiedNameStar();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getImportStatementRule());
                      	        }
                             		set(
                             			current, 
                             			"importedNamespace",
                              		lv_importedNamespace_1_2, 
                              		"QualifiedNameStar");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }
                    break;

            }


            }


            }

            otherlv_2=(Token)match(input,15,FOLLOW_15_in_ruleImportStatement1409); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getImportStatementAccess().getSemicolonKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleImportStatement"


    // $ANTLR start "entryRuleNamespace"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:789:1: entryRuleNamespace returns [EObject current=null] : iv_ruleNamespace= ruleNamespace EOF ;
    public final EObject entryRuleNamespace() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNamespace = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:790:2: (iv_ruleNamespace= ruleNamespace EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:791:2: iv_ruleNamespace= ruleNamespace EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNamespaceRule()); 
            }
            pushFollow(FOLLOW_ruleNamespace_in_entryRuleNamespace1445);
            iv_ruleNamespace=ruleNamespace();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNamespace; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleNamespace1455); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNamespace"


    // $ANTLR start "ruleNamespace"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:798:1: ruleNamespace returns [EObject current=null] : (otherlv_0= 'namespace' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( (lv_imports_3_0= ruleImportStatement ) ) | ( (lv_elements_4_0= ruleIdentifiedElement ) ) | ( (lv_elements_5_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespaces_6_0= ruleNamespace ) ) )* ( ( '}' )=>otherlv_7= '}' ) ) ;
    public final EObject ruleNamespace() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_7=null;
        EObject lv_imports_3_0 = null;

        EObject lv_elements_4_0 = null;

        EObject lv_elements_5_0 = null;

        EObject lv_namespaces_6_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:801:28: ( (otherlv_0= 'namespace' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( (lv_imports_3_0= ruleImportStatement ) ) | ( (lv_elements_4_0= ruleIdentifiedElement ) ) | ( (lv_elements_5_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespaces_6_0= ruleNamespace ) ) )* ( ( '}' )=>otherlv_7= '}' ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:802:1: (otherlv_0= 'namespace' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( (lv_imports_3_0= ruleImportStatement ) ) | ( (lv_elements_4_0= ruleIdentifiedElement ) ) | ( (lv_elements_5_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespaces_6_0= ruleNamespace ) ) )* ( ( '}' )=>otherlv_7= '}' ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:802:1: (otherlv_0= 'namespace' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( (lv_imports_3_0= ruleImportStatement ) ) | ( (lv_elements_4_0= ruleIdentifiedElement ) ) | ( (lv_elements_5_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespaces_6_0= ruleNamespace ) ) )* ( ( '}' )=>otherlv_7= '}' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:802:3: otherlv_0= 'namespace' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( (lv_imports_3_0= ruleImportStatement ) ) | ( (lv_elements_4_0= ruleIdentifiedElement ) ) | ( (lv_elements_5_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespaces_6_0= ruleNamespace ) ) )* ( ( '}' )=>otherlv_7= '}' )
            {
            otherlv_0=(Token)match(input,25,FOLLOW_25_in_ruleNamespace1492); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getNamespaceAccess().getNamespaceKeyword_0());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:806:1: ( (lv_name_1_0= RULE_ID ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:807:1: (lv_name_1_0= RULE_ID )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:807:1: (lv_name_1_0= RULE_ID )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:808:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleNamespace1509); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_1_0, grammarAccess.getNamespaceAccess().getNameIDTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getNamespaceRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,26,FOLLOW_26_in_ruleNamespace1526); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getNamespaceAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:828:1: ( ( (lv_imports_3_0= ruleImportStatement ) ) | ( (lv_elements_4_0= ruleIdentifiedElement ) ) | ( (lv_elements_5_0= ruleCommaEndedIdentifiedElement ) ) | ( (lv_namespaces_6_0= ruleNamespace ) ) )*
            loop16:
            do {
                int alt16=5;
                switch ( input.LA(1) ) {
                case 24:
                    {
                    alt16=1;
                    }
                    break;
                case 28:
                case 29:
                case 30:
                case 32:
                case 42:
                    {
                    alt16=2;
                    }
                    break;
                case 38:
                case 40:
                case 41:
                    {
                    alt16=3;
                    }
                    break;
                case 25:
                    {
                    alt16=4;
                    }
                    break;

                }

                switch (alt16) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:828:2: ( (lv_imports_3_0= ruleImportStatement ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:828:2: ( (lv_imports_3_0= ruleImportStatement ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:829:1: (lv_imports_3_0= ruleImportStatement )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:829:1: (lv_imports_3_0= ruleImportStatement )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:830:3: lv_imports_3_0= ruleImportStatement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getNamespaceAccess().getImportsImportStatementParserRuleCall_3_0_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleImportStatement_in_ruleNamespace1548);
            	    lv_imports_3_0=ruleImportStatement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getNamespaceRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"imports",
            	              		lv_imports_3_0, 
            	              		"ImportStatement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:847:6: ( (lv_elements_4_0= ruleIdentifiedElement ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:847:6: ( (lv_elements_4_0= ruleIdentifiedElement ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:848:1: (lv_elements_4_0= ruleIdentifiedElement )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:848:1: (lv_elements_4_0= ruleIdentifiedElement )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:849:3: lv_elements_4_0= ruleIdentifiedElement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getNamespaceAccess().getElementsIdentifiedElementParserRuleCall_3_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleIdentifiedElement_in_ruleNamespace1575);
            	    lv_elements_4_0=ruleIdentifiedElement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getNamespaceRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"elements",
            	              		lv_elements_4_0, 
            	              		"IdentifiedElement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:866:6: ( (lv_elements_5_0= ruleCommaEndedIdentifiedElement ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:866:6: ( (lv_elements_5_0= ruleCommaEndedIdentifiedElement ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:867:1: (lv_elements_5_0= ruleCommaEndedIdentifiedElement )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:867:1: (lv_elements_5_0= ruleCommaEndedIdentifiedElement )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:868:3: lv_elements_5_0= ruleCommaEndedIdentifiedElement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getNamespaceAccess().getElementsCommaEndedIdentifiedElementParserRuleCall_3_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleCommaEndedIdentifiedElement_in_ruleNamespace1602);
            	    lv_elements_5_0=ruleCommaEndedIdentifiedElement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getNamespaceRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"elements",
            	              		lv_elements_5_0, 
            	              		"CommaEndedIdentifiedElement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;
            	case 4 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:885:6: ( (lv_namespaces_6_0= ruleNamespace ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:885:6: ( (lv_namespaces_6_0= ruleNamespace ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:886:1: (lv_namespaces_6_0= ruleNamespace )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:886:1: (lv_namespaces_6_0= ruleNamespace )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:887:3: lv_namespaces_6_0= ruleNamespace
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getNamespaceAccess().getNamespacesNamespaceParserRuleCall_3_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleNamespace_in_ruleNamespace1629);
            	    lv_namespaces_6_0=ruleNamespace();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getNamespaceRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"namespaces",
            	              		lv_namespaces_6_0, 
            	              		"Namespace");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop16;
                }
            } while (true);

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:903:4: ( ( '}' )=>otherlv_7= '}' )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:903:5: ( '}' )=>otherlv_7= '}'
            {
            otherlv_7=(Token)match(input,27,FOLLOW_27_in_ruleNamespace1651); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getNamespaceAccess().getRightCurlyBracketKeyword_4());
                  
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNamespace"


    // $ANTLR start "entryRuleIdentifiedElement"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:916:1: entryRuleIdentifiedElement returns [EObject current=null] : iv_ruleIdentifiedElement= ruleIdentifiedElement EOF ;
    public final EObject entryRuleIdentifiedElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIdentifiedElement = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:917:2: (iv_ruleIdentifiedElement= ruleIdentifiedElement EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:918:2: iv_ruleIdentifiedElement= ruleIdentifiedElement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIdentifiedElementRule()); 
            }
            pushFollow(FOLLOW_ruleIdentifiedElement_in_entryRuleIdentifiedElement1688);
            iv_ruleIdentifiedElement=ruleIdentifiedElement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIdentifiedElement; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleIdentifiedElement1698); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIdentifiedElement"


    // $ANTLR start "ruleIdentifiedElement"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:925:1: ruleIdentifiedElement returns [EObject current=null] : (this_XFunctionDeclaration_0= ruleXFunctionDeclaration | this_LanguageElement_1= ruleLanguageElement | this_Theme_2= ruleTheme ) ;
    public final EObject ruleIdentifiedElement() throws RecognitionException {
        EObject current = null;

        EObject this_XFunctionDeclaration_0 = null;

        EObject this_LanguageElement_1 = null;

        EObject this_Theme_2 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:928:28: ( (this_XFunctionDeclaration_0= ruleXFunctionDeclaration | this_LanguageElement_1= ruleLanguageElement | this_Theme_2= ruleTheme ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:929:1: (this_XFunctionDeclaration_0= ruleXFunctionDeclaration | this_LanguageElement_1= ruleLanguageElement | this_Theme_2= ruleTheme )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:929:1: (this_XFunctionDeclaration_0= ruleXFunctionDeclaration | this_LanguageElement_1= ruleLanguageElement | this_Theme_2= ruleTheme )
            int alt17=3;
            switch ( input.LA(1) ) {
            case 42:
                {
                alt17=1;
                }
                break;
            case 28:
            case 29:
            case 30:
                {
                alt17=2;
                }
                break;
            case 32:
                {
                alt17=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 17, 0, input);

                throw nvae;
            }

            switch (alt17) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:930:5: this_XFunctionDeclaration_0= ruleXFunctionDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getIdentifiedElementAccess().getXFunctionDeclarationParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXFunctionDeclaration_in_ruleIdentifiedElement1745);
                    this_XFunctionDeclaration_0=ruleXFunctionDeclaration();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XFunctionDeclaration_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:940:5: this_LanguageElement_1= ruleLanguageElement
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getIdentifiedElementAccess().getLanguageElementParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleLanguageElement_in_ruleIdentifiedElement1772);
                    this_LanguageElement_1=ruleLanguageElement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_LanguageElement_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:950:5: this_Theme_2= ruleTheme
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getIdentifiedElementAccess().getThemeParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleTheme_in_ruleIdentifiedElement1799);
                    this_Theme_2=ruleTheme();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Theme_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIdentifiedElement"


    // $ANTLR start "entryRuleLanguageElement"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:966:1: entryRuleLanguageElement returns [EObject current=null] : iv_ruleLanguageElement= ruleLanguageElement EOF ;
    public final EObject entryRuleLanguageElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLanguageElement = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:967:2: (iv_ruleLanguageElement= ruleLanguageElement EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:968:2: iv_ruleLanguageElement= ruleLanguageElement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLanguageElementRule()); 
            }
            pushFollow(FOLLOW_ruleLanguageElement_in_entryRuleLanguageElement1834);
            iv_ruleLanguageElement=ruleLanguageElement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLanguageElement; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleLanguageElement1844); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLanguageElement"


    // $ANTLR start "ruleLanguageElement"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:975:1: ruleLanguageElement returns [EObject current=null] : ( () ( ( (lv_type_1_1= 'entity' | lv_type_1_2= 'relation' | lv_type_1_3= 'diagram' ) ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= ':' ( ( ruleQualifiedName ) ) )? otherlv_5= '{' ( ( ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) ) ) otherlv_7= ';' )* otherlv_8= '}' ) ;
    public final EObject ruleLanguageElement() throws RecognitionException {
        EObject current = null;

        Token lv_type_1_1=null;
        Token lv_type_1_2=null;
        Token lv_type_1_3=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        EObject lv_Properties_6_1 = null;

        EObject lv_Properties_6_2 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:978:28: ( ( () ( ( (lv_type_1_1= 'entity' | lv_type_1_2= 'relation' | lv_type_1_3= 'diagram' ) ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= ':' ( ( ruleQualifiedName ) ) )? otherlv_5= '{' ( ( ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) ) ) otherlv_7= ';' )* otherlv_8= '}' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:979:1: ( () ( ( (lv_type_1_1= 'entity' | lv_type_1_2= 'relation' | lv_type_1_3= 'diagram' ) ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= ':' ( ( ruleQualifiedName ) ) )? otherlv_5= '{' ( ( ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) ) ) otherlv_7= ';' )* otherlv_8= '}' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:979:1: ( () ( ( (lv_type_1_1= 'entity' | lv_type_1_2= 'relation' | lv_type_1_3= 'diagram' ) ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= ':' ( ( ruleQualifiedName ) ) )? otherlv_5= '{' ( ( ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) ) ) otherlv_7= ';' )* otherlv_8= '}' )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:979:2: () ( ( (lv_type_1_1= 'entity' | lv_type_1_2= 'relation' | lv_type_1_3= 'diagram' ) ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= ':' ( ( ruleQualifiedName ) ) )? otherlv_5= '{' ( ( ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) ) ) otherlv_7= ';' )* otherlv_8= '}'
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:979:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:980:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getLanguageElementAccess().getLanguageElementAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:985:2: ( ( (lv_type_1_1= 'entity' | lv_type_1_2= 'relation' | lv_type_1_3= 'diagram' ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:986:1: ( (lv_type_1_1= 'entity' | lv_type_1_2= 'relation' | lv_type_1_3= 'diagram' ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:986:1: ( (lv_type_1_1= 'entity' | lv_type_1_2= 'relation' | lv_type_1_3= 'diagram' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:987:1: (lv_type_1_1= 'entity' | lv_type_1_2= 'relation' | lv_type_1_3= 'diagram' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:987:1: (lv_type_1_1= 'entity' | lv_type_1_2= 'relation' | lv_type_1_3= 'diagram' )
            int alt18=3;
            switch ( input.LA(1) ) {
            case 28:
                {
                alt18=1;
                }
                break;
            case 29:
                {
                alt18=2;
                }
                break;
            case 30:
                {
                alt18=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 18, 0, input);

                throw nvae;
            }

            switch (alt18) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:988:3: lv_type_1_1= 'entity'
                    {
                    lv_type_1_1=(Token)match(input,28,FOLLOW_28_in_ruleLanguageElement1898); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_type_1_1, grammarAccess.getLanguageElementAccess().getTypeEntityKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getLanguageElementRule());
                      	        }
                             		setWithLastConsumed(current, "type", lv_type_1_1, null);
                      	    
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1000:8: lv_type_1_2= 'relation'
                    {
                    lv_type_1_2=(Token)match(input,29,FOLLOW_29_in_ruleLanguageElement1927); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_type_1_2, grammarAccess.getLanguageElementAccess().getTypeRelationKeyword_1_0_1());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getLanguageElementRule());
                      	        }
                             		setWithLastConsumed(current, "type", lv_type_1_2, null);
                      	    
                    }

                    }
                    break;
                case 3 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1012:8: lv_type_1_3= 'diagram'
                    {
                    lv_type_1_3=(Token)match(input,30,FOLLOW_30_in_ruleLanguageElement1956); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_type_1_3, grammarAccess.getLanguageElementAccess().getTypeDiagramKeyword_1_0_2());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getLanguageElementRule());
                      	        }
                             		setWithLastConsumed(current, "type", lv_type_1_3, null);
                      	    
                    }

                    }
                    break;

            }


            }


            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1027:2: ( (lv_name_2_0= RULE_ID ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1028:1: (lv_name_2_0= RULE_ID )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1028:1: (lv_name_2_0= RULE_ID )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1029:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleLanguageElement1989); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_2_0, grammarAccess.getLanguageElementAccess().getNameIDTerminalRuleCall_2_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getLanguageElementRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_2_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1045:2: (otherlv_3= ':' ( ( ruleQualifiedName ) ) )?
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==31) ) {
                alt19=1;
            }
            switch (alt19) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1045:4: otherlv_3= ':' ( ( ruleQualifiedName ) )
                    {
                    otherlv_3=(Token)match(input,31,FOLLOW_31_in_ruleLanguageElement2007); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getLanguageElementAccess().getColonKeyword_3_0());
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1049:1: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1050:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1050:1: ( ruleQualifiedName )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1051:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getLanguageElementRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLanguageElementAccess().getInheritanceLanguageElementCrossReference_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleLanguageElement2030);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,26,FOLLOW_26_in_ruleLanguageElement2044); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getLanguageElementAccess().getLeftCurlyBracketKeyword_4());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1068:1: ( ( ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) ) ) otherlv_7= ';' )*
            loop21:
            do {
                int alt21=2;
                int LA21_0 = input.LA(1);

                if ( (LA21_0==RULE_ID||LA21_0==16||(LA21_0>=28 && LA21_0<=30)||(LA21_0>=32 && LA21_0<=33)||LA21_0==37) ) {
                    alt21=1;
                }


                switch (alt21) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1068:2: ( ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) ) ) otherlv_7= ';'
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1068:2: ( ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1069:1: ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1069:1: ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1070:1: (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1070:1: (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField )
            	    int alt20=2;
            	    int LA20_0 = input.LA(1);

            	    if ( (LA20_0==RULE_ID||LA20_0==16||(LA20_0>=28 && LA20_0<=30)||(LA20_0>=32 && LA20_0<=33)) ) {
            	        alt20=1;
            	    }
            	    else if ( (LA20_0==37) ) {
            	        alt20=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 20, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt20) {
            	        case 1 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1071:3: lv_Properties_6_1= ruleNamedProperty
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getLanguageElementAccess().getPropertiesNamedPropertyParserRuleCall_5_0_0_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_ruleNamedProperty_in_ruleLanguageElement2068);
            	            lv_Properties_6_1=ruleNamedProperty();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getLanguageElementRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"Properties",
            	                      		lv_Properties_6_1, 
            	                      		"NamedProperty");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1086:8: lv_Properties_6_2= ruleElementField
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getLanguageElementAccess().getPropertiesElementFieldParserRuleCall_5_0_0_1()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_ruleElementField_in_ruleLanguageElement2087);
            	            lv_Properties_6_2=ruleElementField();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getLanguageElementRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"Properties",
            	                      		lv_Properties_6_2, 
            	                      		"ElementField");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }

            	    otherlv_7=(Token)match(input,15,FOLLOW_15_in_ruleLanguageElement2102); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_7, grammarAccess.getLanguageElementAccess().getSemicolonKeyword_5_1());
            	          
            	    }

            	    }
            	    break;

            	default :
            	    break loop21;
                }
            } while (true);

            otherlv_8=(Token)match(input,27,FOLLOW_27_in_ruleLanguageElement2116); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_8, grammarAccess.getLanguageElementAccess().getRightCurlyBracketKeyword_6());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLanguageElement"


    // $ANTLR start "entryRuleTheme"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1120:1: entryRuleTheme returns [EObject current=null] : iv_ruleTheme= ruleTheme EOF ;
    public final EObject entryRuleTheme() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTheme = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1121:2: (iv_ruleTheme= ruleTheme EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1122:2: iv_ruleTheme= ruleTheme EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getThemeRule()); 
            }
            pushFollow(FOLLOW_ruleTheme_in_entryRuleTheme2152);
            iv_ruleTheme=ruleTheme();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTheme; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTheme2162); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTheme"


    // $ANTLR start "ruleTheme"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1129:1: ruleTheme returns [EObject current=null] : ( () ( (lv_type_1_0= 'theme' ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= ':' ( ( ruleQualifiedName ) ) )? otherlv_5= '{' ( ( ( ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) ) ) otherlv_7= ';' ) | ( (lv_children_8_0= ruleTheme ) ) )* otherlv_9= '}' ) ;
    public final EObject ruleTheme() throws RecognitionException {
        EObject current = null;

        Token lv_type_1_0=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        EObject lv_Properties_6_1 = null;

        EObject lv_Properties_6_2 = null;

        EObject lv_children_8_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1132:28: ( ( () ( (lv_type_1_0= 'theme' ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= ':' ( ( ruleQualifiedName ) ) )? otherlv_5= '{' ( ( ( ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) ) ) otherlv_7= ';' ) | ( (lv_children_8_0= ruleTheme ) ) )* otherlv_9= '}' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1133:1: ( () ( (lv_type_1_0= 'theme' ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= ':' ( ( ruleQualifiedName ) ) )? otherlv_5= '{' ( ( ( ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) ) ) otherlv_7= ';' ) | ( (lv_children_8_0= ruleTheme ) ) )* otherlv_9= '}' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1133:1: ( () ( (lv_type_1_0= 'theme' ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= ':' ( ( ruleQualifiedName ) ) )? otherlv_5= '{' ( ( ( ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) ) ) otherlv_7= ';' ) | ( (lv_children_8_0= ruleTheme ) ) )* otherlv_9= '}' )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1133:2: () ( (lv_type_1_0= 'theme' ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= ':' ( ( ruleQualifiedName ) ) )? otherlv_5= '{' ( ( ( ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) ) ) otherlv_7= ';' ) | ( (lv_children_8_0= ruleTheme ) ) )* otherlv_9= '}'
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1133:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1134:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getThemeAccess().getThemeAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1139:2: ( (lv_type_1_0= 'theme' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1140:1: (lv_type_1_0= 'theme' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1140:1: (lv_type_1_0= 'theme' )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1141:3: lv_type_1_0= 'theme'
            {
            lv_type_1_0=(Token)match(input,32,FOLLOW_32_in_ruleTheme2214); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_type_1_0, grammarAccess.getThemeAccess().getTypeThemeKeyword_1_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getThemeRule());
              	        }
                     		setWithLastConsumed(current, "type", lv_type_1_0, "theme");
              	    
            }

            }


            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1154:2: ( (lv_name_2_0= RULE_ID ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1155:1: (lv_name_2_0= RULE_ID )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1155:1: (lv_name_2_0= RULE_ID )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1156:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTheme2244); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_2_0, grammarAccess.getThemeAccess().getNameIDTerminalRuleCall_2_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getThemeRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_2_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1172:2: (otherlv_3= ':' ( ( ruleQualifiedName ) ) )?
            int alt22=2;
            int LA22_0 = input.LA(1);

            if ( (LA22_0==31) ) {
                alt22=1;
            }
            switch (alt22) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1172:4: otherlv_3= ':' ( ( ruleQualifiedName ) )
                    {
                    otherlv_3=(Token)match(input,31,FOLLOW_31_in_ruleTheme2262); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getThemeAccess().getColonKeyword_3_0());
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1176:1: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1177:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1177:1: ( ruleQualifiedName )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1178:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getThemeRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getThemeAccess().getInheritanceThemeCrossReference_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleTheme2285);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,26,FOLLOW_26_in_ruleTheme2299); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getThemeAccess().getLeftCurlyBracketKeyword_4());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1195:1: ( ( ( ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) ) ) otherlv_7= ';' ) | ( (lv_children_8_0= ruleTheme ) ) )*
            loop24:
            do {
                int alt24=3;
                int LA24_0 = input.LA(1);

                if ( (LA24_0==RULE_ID||LA24_0==16||(LA24_0>=28 && LA24_0<=30)||LA24_0==33||LA24_0==37) ) {
                    alt24=1;
                }
                else if ( (LA24_0==32) ) {
                    int LA24_3 = input.LA(2);

                    if ( (LA24_3==RULE_ID) ) {
                        alt24=2;
                    }
                    else if ( (LA24_3==34||LA24_3==36||LA24_3==68) ) {
                        alt24=1;
                    }


                }


                switch (alt24) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1195:2: ( ( ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) ) ) otherlv_7= ';' )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1195:2: ( ( ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) ) ) otherlv_7= ';' )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1195:3: ( ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) ) ) otherlv_7= ';'
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1195:3: ( ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1196:1: ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1196:1: ( (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1197:1: (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1197:1: (lv_Properties_6_1= ruleNamedProperty | lv_Properties_6_2= ruleElementField )
            	    int alt23=2;
            	    int LA23_0 = input.LA(1);

            	    if ( (LA23_0==RULE_ID||LA23_0==16||(LA23_0>=28 && LA23_0<=30)||(LA23_0>=32 && LA23_0<=33)) ) {
            	        alt23=1;
            	    }
            	    else if ( (LA23_0==37) ) {
            	        alt23=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 23, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt23) {
            	        case 1 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1198:3: lv_Properties_6_1= ruleNamedProperty
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getThemeAccess().getPropertiesNamedPropertyParserRuleCall_5_0_0_0_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_ruleNamedProperty_in_ruleTheme2324);
            	            lv_Properties_6_1=ruleNamedProperty();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getThemeRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"Properties",
            	                      		lv_Properties_6_1, 
            	                      		"NamedProperty");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1213:8: lv_Properties_6_2= ruleElementField
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getThemeAccess().getPropertiesElementFieldParserRuleCall_5_0_0_0_1()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_ruleElementField_in_ruleTheme2343);
            	            lv_Properties_6_2=ruleElementField();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getThemeRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"Properties",
            	                      		lv_Properties_6_2, 
            	                      		"ElementField");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }

            	    otherlv_7=(Token)match(input,15,FOLLOW_15_in_ruleTheme2358); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_7, grammarAccess.getThemeAccess().getSemicolonKeyword_5_0_1());
            	          
            	    }

            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1236:6: ( (lv_children_8_0= ruleTheme ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1236:6: ( (lv_children_8_0= ruleTheme ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1237:1: (lv_children_8_0= ruleTheme )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1237:1: (lv_children_8_0= ruleTheme )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1238:3: lv_children_8_0= ruleTheme
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getThemeAccess().getChildrenThemeParserRuleCall_5_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleTheme_in_ruleTheme2386);
            	    lv_children_8_0=ruleTheme();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getThemeRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"children",
            	              		lv_children_8_0, 
            	              		"Theme");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop24;
                }
            } while (true);

            otherlv_9=(Token)match(input,27,FOLLOW_27_in_ruleTheme2400); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_9, grammarAccess.getThemeAccess().getRightCurlyBracketKeyword_6());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTheme"


    // $ANTLR start "entryRuleConversionScheme"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1266:1: entryRuleConversionScheme returns [EObject current=null] : iv_ruleConversionScheme= ruleConversionScheme EOF ;
    public final EObject entryRuleConversionScheme() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConversionScheme = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1267:2: (iv_ruleConversionScheme= ruleConversionScheme EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1268:2: iv_ruleConversionScheme= ruleConversionScheme EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getConversionSchemeRule()); 
            }
            pushFollow(FOLLOW_ruleConversionScheme_in_entryRuleConversionScheme2436);
            iv_ruleConversionScheme=ruleConversionScheme();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleConversionScheme; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleConversionScheme2446); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConversionScheme"


    // $ANTLR start "ruleConversionScheme"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1275:1: ruleConversionScheme returns [EObject current=null] : ( () ( (lv_type_1_0= 'rule' ) ) ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '{' ( ( ( (lv_Properties_4_1= ruleNamedProperty | lv_Properties_4_2= ruleElementField ) ) ) otherlv_5= ';' )* otherlv_6= '}' ) ;
    public final EObject ruleConversionScheme() throws RecognitionException {
        EObject current = null;

        Token lv_type_1_0=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        EObject lv_Properties_4_1 = null;

        EObject lv_Properties_4_2 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1278:28: ( ( () ( (lv_type_1_0= 'rule' ) ) ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '{' ( ( ( (lv_Properties_4_1= ruleNamedProperty | lv_Properties_4_2= ruleElementField ) ) ) otherlv_5= ';' )* otherlv_6= '}' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1279:1: ( () ( (lv_type_1_0= 'rule' ) ) ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '{' ( ( ( (lv_Properties_4_1= ruleNamedProperty | lv_Properties_4_2= ruleElementField ) ) ) otherlv_5= ';' )* otherlv_6= '}' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1279:1: ( () ( (lv_type_1_0= 'rule' ) ) ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '{' ( ( ( (lv_Properties_4_1= ruleNamedProperty | lv_Properties_4_2= ruleElementField ) ) ) otherlv_5= ';' )* otherlv_6= '}' )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1279:2: () ( (lv_type_1_0= 'rule' ) ) ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '{' ( ( ( (lv_Properties_4_1= ruleNamedProperty | lv_Properties_4_2= ruleElementField ) ) ) otherlv_5= ';' )* otherlv_6= '}'
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1279:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1280:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getConversionSchemeAccess().getDslConvertionSchemeAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1285:2: ( (lv_type_1_0= 'rule' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1286:1: (lv_type_1_0= 'rule' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1286:1: (lv_type_1_0= 'rule' )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1287:3: lv_type_1_0= 'rule'
            {
            lv_type_1_0=(Token)match(input,33,FOLLOW_33_in_ruleConversionScheme2498); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_type_1_0, grammarAccess.getConversionSchemeAccess().getTypeRuleKeyword_1_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getConversionSchemeRule());
              	        }
                     		setWithLastConsumed(current, "type", lv_type_1_0, "rule");
              	    
            }

            }


            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1300:2: ( (lv_name_2_0= RULE_ID ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1301:1: (lv_name_2_0= RULE_ID )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1301:1: (lv_name_2_0= RULE_ID )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1302:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleConversionScheme2528); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_2_0, grammarAccess.getConversionSchemeAccess().getNameIDTerminalRuleCall_2_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getConversionSchemeRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_2_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,26,FOLLOW_26_in_ruleConversionScheme2545); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getConversionSchemeAccess().getLeftCurlyBracketKeyword_3());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1322:1: ( ( ( (lv_Properties_4_1= ruleNamedProperty | lv_Properties_4_2= ruleElementField ) ) ) otherlv_5= ';' )*
            loop26:
            do {
                int alt26=2;
                int LA26_0 = input.LA(1);

                if ( (LA26_0==RULE_ID||LA26_0==16||(LA26_0>=28 && LA26_0<=30)||(LA26_0>=32 && LA26_0<=33)||LA26_0==37) ) {
                    alt26=1;
                }


                switch (alt26) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1322:2: ( ( (lv_Properties_4_1= ruleNamedProperty | lv_Properties_4_2= ruleElementField ) ) ) otherlv_5= ';'
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1322:2: ( ( (lv_Properties_4_1= ruleNamedProperty | lv_Properties_4_2= ruleElementField ) ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1323:1: ( (lv_Properties_4_1= ruleNamedProperty | lv_Properties_4_2= ruleElementField ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1323:1: ( (lv_Properties_4_1= ruleNamedProperty | lv_Properties_4_2= ruleElementField ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1324:1: (lv_Properties_4_1= ruleNamedProperty | lv_Properties_4_2= ruleElementField )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1324:1: (lv_Properties_4_1= ruleNamedProperty | lv_Properties_4_2= ruleElementField )
            	    int alt25=2;
            	    int LA25_0 = input.LA(1);

            	    if ( (LA25_0==RULE_ID||LA25_0==16||(LA25_0>=28 && LA25_0<=30)||(LA25_0>=32 && LA25_0<=33)) ) {
            	        alt25=1;
            	    }
            	    else if ( (LA25_0==37) ) {
            	        alt25=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 25, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt25) {
            	        case 1 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1325:3: lv_Properties_4_1= ruleNamedProperty
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getConversionSchemeAccess().getPropertiesNamedPropertyParserRuleCall_4_0_0_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_ruleNamedProperty_in_ruleConversionScheme2569);
            	            lv_Properties_4_1=ruleNamedProperty();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getConversionSchemeRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"Properties",
            	                      		lv_Properties_4_1, 
            	                      		"NamedProperty");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1340:8: lv_Properties_4_2= ruleElementField
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getConversionSchemeAccess().getPropertiesElementFieldParserRuleCall_4_0_0_1()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_ruleElementField_in_ruleConversionScheme2588);
            	            lv_Properties_4_2=ruleElementField();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getConversionSchemeRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"Properties",
            	                      		lv_Properties_4_2, 
            	                      		"ElementField");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }

            	    otherlv_5=(Token)match(input,15,FOLLOW_15_in_ruleConversionScheme2603); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_5, grammarAccess.getConversionSchemeAccess().getSemicolonKeyword_4_1());
            	          
            	    }

            	    }
            	    break;

            	default :
            	    break loop26;
                }
            } while (true);

            otherlv_6=(Token)match(input,27,FOLLOW_27_in_ruleConversionScheme2617); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getConversionSchemeAccess().getRightCurlyBracketKeyword_5());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConversionScheme"


    // $ANTLR start "entryRuleNamedProperty"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1374:1: entryRuleNamedProperty returns [EObject current=null] : iv_ruleNamedProperty= ruleNamedProperty EOF ;
    public final EObject entryRuleNamedProperty() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNamedProperty = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1375:2: (iv_ruleNamedProperty= ruleNamedProperty EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1376:2: iv_ruleNamedProperty= ruleNamedProperty EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNamedPropertyRule()); 
            }
            pushFollow(FOLLOW_ruleNamedProperty_in_entryRuleNamedProperty2653);
            iv_ruleNamedProperty=ruleNamedProperty();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNamedProperty; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleNamedProperty2663); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNamedProperty"


    // $ANTLR start "ruleNamedProperty"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1383:1: ruleNamedProperty returns [EObject current=null] : ( () ( (lv_name_1_0= ruleDotQualifiedName ) ) (otherlv_2= '[' ( (lv_Tags_3_0= ruleElementPropertyTag ) ) (otherlv_4= ',' ( (lv_Tags_5_0= ruleElementPropertyTag ) ) )* otherlv_6= ']' )? otherlv_7= '=' ( (lv_value_8_0= ruleXExpression ) ) ) ;
    public final EObject ruleNamedProperty() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_Tags_3_0 = null;

        EObject lv_Tags_5_0 = null;

        EObject lv_value_8_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1386:28: ( ( () ( (lv_name_1_0= ruleDotQualifiedName ) ) (otherlv_2= '[' ( (lv_Tags_3_0= ruleElementPropertyTag ) ) (otherlv_4= ',' ( (lv_Tags_5_0= ruleElementPropertyTag ) ) )* otherlv_6= ']' )? otherlv_7= '=' ( (lv_value_8_0= ruleXExpression ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1387:1: ( () ( (lv_name_1_0= ruleDotQualifiedName ) ) (otherlv_2= '[' ( (lv_Tags_3_0= ruleElementPropertyTag ) ) (otherlv_4= ',' ( (lv_Tags_5_0= ruleElementPropertyTag ) ) )* otherlv_6= ']' )? otherlv_7= '=' ( (lv_value_8_0= ruleXExpression ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1387:1: ( () ( (lv_name_1_0= ruleDotQualifiedName ) ) (otherlv_2= '[' ( (lv_Tags_3_0= ruleElementPropertyTag ) ) (otherlv_4= ',' ( (lv_Tags_5_0= ruleElementPropertyTag ) ) )* otherlv_6= ']' )? otherlv_7= '=' ( (lv_value_8_0= ruleXExpression ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1387:2: () ( (lv_name_1_0= ruleDotQualifiedName ) ) (otherlv_2= '[' ( (lv_Tags_3_0= ruleElementPropertyTag ) ) (otherlv_4= ',' ( (lv_Tags_5_0= ruleElementPropertyTag ) ) )* otherlv_6= ']' )? otherlv_7= '=' ( (lv_value_8_0= ruleXExpression ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1387:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1388:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getNamedPropertyAccess().getNamedPropertyAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1393:2: ( (lv_name_1_0= ruleDotQualifiedName ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1394:1: (lv_name_1_0= ruleDotQualifiedName )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1394:1: (lv_name_1_0= ruleDotQualifiedName )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1395:3: lv_name_1_0= ruleDotQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getNamedPropertyAccess().getNameDotQualifiedNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleDotQualifiedName_in_ruleNamedProperty2718);
            lv_name_1_0=ruleDotQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getNamedPropertyRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"DotQualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1411:2: (otherlv_2= '[' ( (lv_Tags_3_0= ruleElementPropertyTag ) ) (otherlv_4= ',' ( (lv_Tags_5_0= ruleElementPropertyTag ) ) )* otherlv_6= ']' )?
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==34) ) {
                alt28=1;
            }
            switch (alt28) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1411:4: otherlv_2= '[' ( (lv_Tags_3_0= ruleElementPropertyTag ) ) (otherlv_4= ',' ( (lv_Tags_5_0= ruleElementPropertyTag ) ) )* otherlv_6= ']'
                    {
                    otherlv_2=(Token)match(input,34,FOLLOW_34_in_ruleNamedProperty2731); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getNamedPropertyAccess().getLeftSquareBracketKeyword_2_0());
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1415:1: ( (lv_Tags_3_0= ruleElementPropertyTag ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1416:1: (lv_Tags_3_0= ruleElementPropertyTag )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1416:1: (lv_Tags_3_0= ruleElementPropertyTag )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1417:3: lv_Tags_3_0= ruleElementPropertyTag
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getNamedPropertyAccess().getTagsElementPropertyTagParserRuleCall_2_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleElementPropertyTag_in_ruleNamedProperty2752);
                    lv_Tags_3_0=ruleElementPropertyTag();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getNamedPropertyRule());
                      	        }
                             		add(
                             			current, 
                             			"Tags",
                              		lv_Tags_3_0, 
                              		"ElementPropertyTag");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1433:2: (otherlv_4= ',' ( (lv_Tags_5_0= ruleElementPropertyTag ) ) )*
                    loop27:
                    do {
                        int alt27=2;
                        int LA27_0 = input.LA(1);

                        if ( (LA27_0==18) ) {
                            alt27=1;
                        }


                        switch (alt27) {
                    	case 1 :
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1433:4: otherlv_4= ',' ( (lv_Tags_5_0= ruleElementPropertyTag ) )
                    	    {
                    	    otherlv_4=(Token)match(input,18,FOLLOW_18_in_ruleNamedProperty2765); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_4, grammarAccess.getNamedPropertyAccess().getCommaKeyword_2_2_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1437:1: ( (lv_Tags_5_0= ruleElementPropertyTag ) )
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1438:1: (lv_Tags_5_0= ruleElementPropertyTag )
                    	    {
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1438:1: (lv_Tags_5_0= ruleElementPropertyTag )
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1439:3: lv_Tags_5_0= ruleElementPropertyTag
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getNamedPropertyAccess().getTagsElementPropertyTagParserRuleCall_2_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleElementPropertyTag_in_ruleNamedProperty2786);
                    	    lv_Tags_5_0=ruleElementPropertyTag();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getNamedPropertyRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"Tags",
                    	              		lv_Tags_5_0, 
                    	              		"ElementPropertyTag");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop27;
                        }
                    } while (true);

                    otherlv_6=(Token)match(input,35,FOLLOW_35_in_ruleNamedProperty2800); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getNamedPropertyAccess().getRightSquareBracketKeyword_2_3());
                          
                    }

                    }
                    break;

            }

            otherlv_7=(Token)match(input,36,FOLLOW_36_in_ruleNamedProperty2814); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getNamedPropertyAccess().getEqualsSignKeyword_3());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1463:1: ( (lv_value_8_0= ruleXExpression ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1464:1: (lv_value_8_0= ruleXExpression )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1464:1: (lv_value_8_0= ruleXExpression )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1465:3: lv_value_8_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getNamedPropertyAccess().getValueXExpressionParserRuleCall_4_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleNamedProperty2835);
            lv_value_8_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getNamedPropertyRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_8_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNamedProperty"


    // $ANTLR start "entryRuleElementField"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1489:1: entryRuleElementField returns [EObject current=null] : iv_ruleElementField= ruleElementField EOF ;
    public final EObject entryRuleElementField() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleElementField = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1490:2: (iv_ruleElementField= ruleElementField EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1491:2: iv_ruleElementField= ruleElementField EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getElementFieldRule()); 
            }
            pushFollow(FOLLOW_ruleElementField_in_entryRuleElementField2871);
            iv_ruleElementField=ruleElementField();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleElementField; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleElementField2881); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleElementField"


    // $ANTLR start "ruleElementField"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1498:1: ruleElementField returns [EObject current=null] : ( () ( (lv_isField_1_0= 'field' ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= '[' ( (lv_Tags_4_0= ruleElementPropertyTag ) ) (otherlv_5= ',' ( (lv_Tags_6_0= ruleElementPropertyTag ) ) )* otherlv_7= ']' )? otherlv_8= ':' ( (lv_type_9_0= RULE_ID ) ) (otherlv_10= '=' ( (lv_value_11_0= ruleXExpression ) ) )? ) ;
    public final EObject ruleElementField() throws RecognitionException {
        EObject current = null;

        Token lv_isField_1_0=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token lv_type_9_0=null;
        Token otherlv_10=null;
        EObject lv_Tags_4_0 = null;

        EObject lv_Tags_6_0 = null;

        EObject lv_value_11_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1501:28: ( ( () ( (lv_isField_1_0= 'field' ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= '[' ( (lv_Tags_4_0= ruleElementPropertyTag ) ) (otherlv_5= ',' ( (lv_Tags_6_0= ruleElementPropertyTag ) ) )* otherlv_7= ']' )? otherlv_8= ':' ( (lv_type_9_0= RULE_ID ) ) (otherlv_10= '=' ( (lv_value_11_0= ruleXExpression ) ) )? ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1502:1: ( () ( (lv_isField_1_0= 'field' ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= '[' ( (lv_Tags_4_0= ruleElementPropertyTag ) ) (otherlv_5= ',' ( (lv_Tags_6_0= ruleElementPropertyTag ) ) )* otherlv_7= ']' )? otherlv_8= ':' ( (lv_type_9_0= RULE_ID ) ) (otherlv_10= '=' ( (lv_value_11_0= ruleXExpression ) ) )? )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1502:1: ( () ( (lv_isField_1_0= 'field' ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= '[' ( (lv_Tags_4_0= ruleElementPropertyTag ) ) (otherlv_5= ',' ( (lv_Tags_6_0= ruleElementPropertyTag ) ) )* otherlv_7= ']' )? otherlv_8= ':' ( (lv_type_9_0= RULE_ID ) ) (otherlv_10= '=' ( (lv_value_11_0= ruleXExpression ) ) )? )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1502:2: () ( (lv_isField_1_0= 'field' ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= '[' ( (lv_Tags_4_0= ruleElementPropertyTag ) ) (otherlv_5= ',' ( (lv_Tags_6_0= ruleElementPropertyTag ) ) )* otherlv_7= ']' )? otherlv_8= ':' ( (lv_type_9_0= RULE_ID ) ) (otherlv_10= '=' ( (lv_value_11_0= ruleXExpression ) ) )?
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1502:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1503:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getElementFieldAccess().getElementFieldAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1508:2: ( (lv_isField_1_0= 'field' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1509:1: (lv_isField_1_0= 'field' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1509:1: (lv_isField_1_0= 'field' )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1510:3: lv_isField_1_0= 'field'
            {
            lv_isField_1_0=(Token)match(input,37,FOLLOW_37_in_ruleElementField2933); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_isField_1_0, grammarAccess.getElementFieldAccess().getIsFieldFieldKeyword_1_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getElementFieldRule());
              	        }
                     		setWithLastConsumed(current, "isField", lv_isField_1_0, "field");
              	    
            }

            }


            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1523:2: ( (lv_name_2_0= RULE_ID ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1524:1: (lv_name_2_0= RULE_ID )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1524:1: (lv_name_2_0= RULE_ID )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1525:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleElementField2963); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_2_0, grammarAccess.getElementFieldAccess().getNameIDTerminalRuleCall_2_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getElementFieldRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_2_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1541:2: (otherlv_3= '[' ( (lv_Tags_4_0= ruleElementPropertyTag ) ) (otherlv_5= ',' ( (lv_Tags_6_0= ruleElementPropertyTag ) ) )* otherlv_7= ']' )?
            int alt30=2;
            int LA30_0 = input.LA(1);

            if ( (LA30_0==34) ) {
                alt30=1;
            }
            switch (alt30) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1541:4: otherlv_3= '[' ( (lv_Tags_4_0= ruleElementPropertyTag ) ) (otherlv_5= ',' ( (lv_Tags_6_0= ruleElementPropertyTag ) ) )* otherlv_7= ']'
                    {
                    otherlv_3=(Token)match(input,34,FOLLOW_34_in_ruleElementField2981); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getElementFieldAccess().getLeftSquareBracketKeyword_3_0());
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1545:1: ( (lv_Tags_4_0= ruleElementPropertyTag ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1546:1: (lv_Tags_4_0= ruleElementPropertyTag )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1546:1: (lv_Tags_4_0= ruleElementPropertyTag )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1547:3: lv_Tags_4_0= ruleElementPropertyTag
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getElementFieldAccess().getTagsElementPropertyTagParserRuleCall_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleElementPropertyTag_in_ruleElementField3002);
                    lv_Tags_4_0=ruleElementPropertyTag();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getElementFieldRule());
                      	        }
                             		add(
                             			current, 
                             			"Tags",
                              		lv_Tags_4_0, 
                              		"ElementPropertyTag");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1563:2: (otherlv_5= ',' ( (lv_Tags_6_0= ruleElementPropertyTag ) ) )*
                    loop29:
                    do {
                        int alt29=2;
                        int LA29_0 = input.LA(1);

                        if ( (LA29_0==18) ) {
                            alt29=1;
                        }


                        switch (alt29) {
                    	case 1 :
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1563:4: otherlv_5= ',' ( (lv_Tags_6_0= ruleElementPropertyTag ) )
                    	    {
                    	    otherlv_5=(Token)match(input,18,FOLLOW_18_in_ruleElementField3015); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_5, grammarAccess.getElementFieldAccess().getCommaKeyword_3_2_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1567:1: ( (lv_Tags_6_0= ruleElementPropertyTag ) )
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1568:1: (lv_Tags_6_0= ruleElementPropertyTag )
                    	    {
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1568:1: (lv_Tags_6_0= ruleElementPropertyTag )
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1569:3: lv_Tags_6_0= ruleElementPropertyTag
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getElementFieldAccess().getTagsElementPropertyTagParserRuleCall_3_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleElementPropertyTag_in_ruleElementField3036);
                    	    lv_Tags_6_0=ruleElementPropertyTag();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getElementFieldRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"Tags",
                    	              		lv_Tags_6_0, 
                    	              		"ElementPropertyTag");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop29;
                        }
                    } while (true);

                    otherlv_7=(Token)match(input,35,FOLLOW_35_in_ruleElementField3050); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getElementFieldAccess().getRightSquareBracketKeyword_3_3());
                          
                    }

                    }
                    break;

            }

            otherlv_8=(Token)match(input,31,FOLLOW_31_in_ruleElementField3064); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_8, grammarAccess.getElementFieldAccess().getColonKeyword_4());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1593:1: ( (lv_type_9_0= RULE_ID ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1594:1: (lv_type_9_0= RULE_ID )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1594:1: (lv_type_9_0= RULE_ID )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1595:3: lv_type_9_0= RULE_ID
            {
            lv_type_9_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleElementField3081); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_type_9_0, grammarAccess.getElementFieldAccess().getTypeIDTerminalRuleCall_5_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getElementFieldRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"type",
                      		lv_type_9_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1611:2: (otherlv_10= '=' ( (lv_value_11_0= ruleXExpression ) ) )?
            int alt31=2;
            int LA31_0 = input.LA(1);

            if ( (LA31_0==36) ) {
                alt31=1;
            }
            switch (alt31) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1611:4: otherlv_10= '=' ( (lv_value_11_0= ruleXExpression ) )
                    {
                    otherlv_10=(Token)match(input,36,FOLLOW_36_in_ruleElementField3099); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_10, grammarAccess.getElementFieldAccess().getEqualsSignKeyword_6_0());
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1615:1: ( (lv_value_11_0= ruleXExpression ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1616:1: (lv_value_11_0= ruleXExpression )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1616:1: (lv_value_11_0= ruleXExpression )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1617:3: lv_value_11_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getElementFieldAccess().getValueXExpressionParserRuleCall_6_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleElementField3120);
                    lv_value_11_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getElementFieldRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_11_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleElementField"


    // $ANTLR start "entryRuleElementPropertyTag"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1641:1: entryRuleElementPropertyTag returns [EObject current=null] : iv_ruleElementPropertyTag= ruleElementPropertyTag EOF ;
    public final EObject entryRuleElementPropertyTag() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleElementPropertyTag = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1642:2: (iv_ruleElementPropertyTag= ruleElementPropertyTag EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1643:2: iv_ruleElementPropertyTag= ruleElementPropertyTag EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getElementPropertyTagRule()); 
            }
            pushFollow(FOLLOW_ruleElementPropertyTag_in_entryRuleElementPropertyTag3158);
            iv_ruleElementPropertyTag=ruleElementPropertyTag();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleElementPropertyTag; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleElementPropertyTag3168); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleElementPropertyTag"


    // $ANTLR start "ruleElementPropertyTag"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1650:1: ruleElementPropertyTag returns [EObject current=null] : ( () ( (lv_name_1_0= ruleDotQualifiedName ) ) otherlv_2= ':' ( (lv_value_3_0= ruleXExpression ) ) ) ;
    public final EObject ruleElementPropertyTag() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_value_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1653:28: ( ( () ( (lv_name_1_0= ruleDotQualifiedName ) ) otherlv_2= ':' ( (lv_value_3_0= ruleXExpression ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1654:1: ( () ( (lv_name_1_0= ruleDotQualifiedName ) ) otherlv_2= ':' ( (lv_value_3_0= ruleXExpression ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1654:1: ( () ( (lv_name_1_0= ruleDotQualifiedName ) ) otherlv_2= ':' ( (lv_value_3_0= ruleXExpression ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1654:2: () ( (lv_name_1_0= ruleDotQualifiedName ) ) otherlv_2= ':' ( (lv_value_3_0= ruleXExpression ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1654:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1655:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getElementPropertyTagAccess().getNamedPropertyAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1660:2: ( (lv_name_1_0= ruleDotQualifiedName ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1661:1: (lv_name_1_0= ruleDotQualifiedName )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1661:1: (lv_name_1_0= ruleDotQualifiedName )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1662:3: lv_name_1_0= ruleDotQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getElementPropertyTagAccess().getNameDotQualifiedNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleDotQualifiedName_in_ruleElementPropertyTag3223);
            lv_name_1_0=ruleDotQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getElementPropertyTagRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"DotQualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,31,FOLLOW_31_in_ruleElementPropertyTag3235); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getElementPropertyTagAccess().getColonKeyword_2());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1682:1: ( (lv_value_3_0= ruleXExpression ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1683:1: (lv_value_3_0= ruleXExpression )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1683:1: (lv_value_3_0= ruleXExpression )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1684:3: lv_value_3_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getElementPropertyTagAccess().getValueXExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleElementPropertyTag3256);
            lv_value_3_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getElementPropertyTagRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_3_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleElementPropertyTag"


    // $ANTLR start "entryRuleCommaEndedIdentifiedElement"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1708:1: entryRuleCommaEndedIdentifiedElement returns [EObject current=null] : iv_ruleCommaEndedIdentifiedElement= ruleCommaEndedIdentifiedElement EOF ;
    public final EObject entryRuleCommaEndedIdentifiedElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCommaEndedIdentifiedElement = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1709:2: (iv_ruleCommaEndedIdentifiedElement= ruleCommaEndedIdentifiedElement EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1710:2: iv_ruleCommaEndedIdentifiedElement= ruleCommaEndedIdentifiedElement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getCommaEndedIdentifiedElementRule()); 
            }
            pushFollow(FOLLOW_ruleCommaEndedIdentifiedElement_in_entryRuleCommaEndedIdentifiedElement3292);
            iv_ruleCommaEndedIdentifiedElement=ruleCommaEndedIdentifiedElement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCommaEndedIdentifiedElement; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleCommaEndedIdentifiedElement3302); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCommaEndedIdentifiedElement"


    // $ANTLR start "ruleCommaEndedIdentifiedElement"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1717:1: ruleCommaEndedIdentifiedElement returns [EObject current=null] : ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XJavaTypeImport_1= ruleXJavaTypeImport ) otherlv_2= ';' ) ;
    public final EObject ruleCommaEndedIdentifiedElement() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_XVariableDeclaration_0 = null;

        EObject this_XJavaTypeImport_1 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1720:28: ( ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XJavaTypeImport_1= ruleXJavaTypeImport ) otherlv_2= ';' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1721:1: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XJavaTypeImport_1= ruleXJavaTypeImport ) otherlv_2= ';' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1721:1: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XJavaTypeImport_1= ruleXJavaTypeImport ) otherlv_2= ';' )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1721:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XJavaTypeImport_1= ruleXJavaTypeImport ) otherlv_2= ';'
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1721:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XJavaTypeImport_1= ruleXJavaTypeImport )
            int alt32=2;
            int LA32_0 = input.LA(1);

            if ( ((LA32_0>=40 && LA32_0<=41)) ) {
                alt32=1;
            }
            else if ( (LA32_0==38) ) {
                alt32=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 32, 0, input);

                throw nvae;
            }
            switch (alt32) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1722:5: this_XVariableDeclaration_0= ruleXVariableDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getCommaEndedIdentifiedElementAccess().getXVariableDeclarationParserRuleCall_0_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXVariableDeclaration_in_ruleCommaEndedIdentifiedElement3350);
                    this_XVariableDeclaration_0=ruleXVariableDeclaration();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XVariableDeclaration_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1732:5: this_XJavaTypeImport_1= ruleXJavaTypeImport
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getCommaEndedIdentifiedElementAccess().getXJavaTypeImportParserRuleCall_0_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXJavaTypeImport_in_ruleCommaEndedIdentifiedElement3377);
                    this_XJavaTypeImport_1=ruleXJavaTypeImport();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XJavaTypeImport_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }

            otherlv_2=(Token)match(input,15,FOLLOW_15_in_ruleCommaEndedIdentifiedElement3389); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getCommaEndedIdentifiedElementAccess().getSemicolonKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCommaEndedIdentifiedElement"


    // $ANTLR start "entryRuleXJavaTypeImport"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1752:1: entryRuleXJavaTypeImport returns [EObject current=null] : iv_ruleXJavaTypeImport= ruleXJavaTypeImport EOF ;
    public final EObject entryRuleXJavaTypeImport() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXJavaTypeImport = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1753:2: (iv_ruleXJavaTypeImport= ruleXJavaTypeImport EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1754:2: iv_ruleXJavaTypeImport= ruleXJavaTypeImport EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXJavaTypeImportRule()); 
            }
            pushFollow(FOLLOW_ruleXJavaTypeImport_in_entryRuleXJavaTypeImport3425);
            iv_ruleXJavaTypeImport=ruleXJavaTypeImport();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXJavaTypeImport; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXJavaTypeImport3435); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXJavaTypeImport"


    // $ANTLR start "ruleXJavaTypeImport"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1761:1: ruleXJavaTypeImport returns [EObject current=null] : ( () otherlv_1= 'use' ( ( (lv_class_2_1= RULE_STRING | lv_class_2_2= ruleDotQualifiedName ) ) ) otherlv_3= 'as' ( (lv_name_4_0= RULE_ID ) ) ) ;
    public final EObject ruleXJavaTypeImport() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_class_2_1=null;
        Token otherlv_3=null;
        Token lv_name_4_0=null;
        AntlrDatatypeRuleToken lv_class_2_2 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1764:28: ( ( () otherlv_1= 'use' ( ( (lv_class_2_1= RULE_STRING | lv_class_2_2= ruleDotQualifiedName ) ) ) otherlv_3= 'as' ( (lv_name_4_0= RULE_ID ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1765:1: ( () otherlv_1= 'use' ( ( (lv_class_2_1= RULE_STRING | lv_class_2_2= ruleDotQualifiedName ) ) ) otherlv_3= 'as' ( (lv_name_4_0= RULE_ID ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1765:1: ( () otherlv_1= 'use' ( ( (lv_class_2_1= RULE_STRING | lv_class_2_2= ruleDotQualifiedName ) ) ) otherlv_3= 'as' ( (lv_name_4_0= RULE_ID ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1765:2: () otherlv_1= 'use' ( ( (lv_class_2_1= RULE_STRING | lv_class_2_2= ruleDotQualifiedName ) ) ) otherlv_3= 'as' ( (lv_name_4_0= RULE_ID ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1765:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1766:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXJavaTypeImportAccess().getXJavaTypeImportAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,38,FOLLOW_38_in_ruleXJavaTypeImport3481); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXJavaTypeImportAccess().getUseKeyword_1());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1775:1: ( ( (lv_class_2_1= RULE_STRING | lv_class_2_2= ruleDotQualifiedName ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1776:1: ( (lv_class_2_1= RULE_STRING | lv_class_2_2= ruleDotQualifiedName ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1776:1: ( (lv_class_2_1= RULE_STRING | lv_class_2_2= ruleDotQualifiedName ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1777:1: (lv_class_2_1= RULE_STRING | lv_class_2_2= ruleDotQualifiedName )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1777:1: (lv_class_2_1= RULE_STRING | lv_class_2_2= ruleDotQualifiedName )
            int alt33=2;
            int LA33_0 = input.LA(1);

            if ( (LA33_0==RULE_STRING) ) {
                alt33=1;
            }
            else if ( (LA33_0==RULE_ID||LA33_0==16||(LA33_0>=28 && LA33_0<=30)||(LA33_0>=32 && LA33_0<=33)) ) {
                alt33=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 33, 0, input);

                throw nvae;
            }
            switch (alt33) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1778:3: lv_class_2_1= RULE_STRING
                    {
                    lv_class_2_1=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleXJavaTypeImport3500); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_class_2_1, grammarAccess.getXJavaTypeImportAccess().getClassSTRINGTerminalRuleCall_2_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXJavaTypeImportRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"class",
                              		lv_class_2_1, 
                              		"STRING");
                      	    
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1793:8: lv_class_2_2= ruleDotQualifiedName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXJavaTypeImportAccess().getClassDotQualifiedNameParserRuleCall_2_0_1()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleDotQualifiedName_in_ruleXJavaTypeImport3524);
                    lv_class_2_2=ruleDotQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXJavaTypeImportRule());
                      	        }
                             		set(
                             			current, 
                             			"class",
                              		lv_class_2_2, 
                              		"DotQualifiedName");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }
                    break;

            }


            }


            }

            otherlv_3=(Token)match(input,39,FOLLOW_39_in_ruleXJavaTypeImport3539); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getXJavaTypeImportAccess().getAsKeyword_3());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1815:1: ( (lv_name_4_0= RULE_ID ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1816:1: (lv_name_4_0= RULE_ID )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1816:1: (lv_name_4_0= RULE_ID )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1817:3: lv_name_4_0= RULE_ID
            {
            lv_name_4_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleXJavaTypeImport3556); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_4_0, grammarAccess.getXJavaTypeImportAccess().getNameIDTerminalRuleCall_4_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getXJavaTypeImportRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_4_0, 
                      		"ID");
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXJavaTypeImport"


    // $ANTLR start "entryRuleXVariableDeclaration"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1841:1: entryRuleXVariableDeclaration returns [EObject current=null] : iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF ;
    public final EObject entryRuleXVariableDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXVariableDeclaration = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1842:2: (iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1843:2: iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXVariableDeclarationRule()); 
            }
            pushFollow(FOLLOW_ruleXVariableDeclaration_in_entryRuleXVariableDeclaration3597);
            iv_ruleXVariableDeclaration=ruleXVariableDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXVariableDeclaration; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXVariableDeclaration3607); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXVariableDeclaration"


    // $ANTLR start "ruleXVariableDeclaration"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1850:1: ruleXVariableDeclaration returns [EObject current=null] : ( () ( (otherlv_1= 'const' ( (lv_name_2_0= RULE_ID ) ) ( ( ( '=' )=>otherlv_3= '=' ) ( (lv_value_4_0= ruleXExpression ) ) )? ) | ( ( (lv_writable_5_0= 'var' ) ) ( (lv_name_6_0= RULE_ID ) ) ( ( ( '=' )=>otherlv_7= '=' ) ( (lv_value_8_0= ruleXExpression ) ) )? ) ) ) ;
    public final EObject ruleXVariableDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token lv_writable_5_0=null;
        Token lv_name_6_0=null;
        Token otherlv_7=null;
        EObject lv_value_4_0 = null;

        EObject lv_value_8_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1853:28: ( ( () ( (otherlv_1= 'const' ( (lv_name_2_0= RULE_ID ) ) ( ( ( '=' )=>otherlv_3= '=' ) ( (lv_value_4_0= ruleXExpression ) ) )? ) | ( ( (lv_writable_5_0= 'var' ) ) ( (lv_name_6_0= RULE_ID ) ) ( ( ( '=' )=>otherlv_7= '=' ) ( (lv_value_8_0= ruleXExpression ) ) )? ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1854:1: ( () ( (otherlv_1= 'const' ( (lv_name_2_0= RULE_ID ) ) ( ( ( '=' )=>otherlv_3= '=' ) ( (lv_value_4_0= ruleXExpression ) ) )? ) | ( ( (lv_writable_5_0= 'var' ) ) ( (lv_name_6_0= RULE_ID ) ) ( ( ( '=' )=>otherlv_7= '=' ) ( (lv_value_8_0= ruleXExpression ) ) )? ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1854:1: ( () ( (otherlv_1= 'const' ( (lv_name_2_0= RULE_ID ) ) ( ( ( '=' )=>otherlv_3= '=' ) ( (lv_value_4_0= ruleXExpression ) ) )? ) | ( ( (lv_writable_5_0= 'var' ) ) ( (lv_name_6_0= RULE_ID ) ) ( ( ( '=' )=>otherlv_7= '=' ) ( (lv_value_8_0= ruleXExpression ) ) )? ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1854:2: () ( (otherlv_1= 'const' ( (lv_name_2_0= RULE_ID ) ) ( ( ( '=' )=>otherlv_3= '=' ) ( (lv_value_4_0= ruleXExpression ) ) )? ) | ( ( (lv_writable_5_0= 'var' ) ) ( (lv_name_6_0= RULE_ID ) ) ( ( ( '=' )=>otherlv_7= '=' ) ( (lv_value_8_0= ruleXExpression ) ) )? ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1854:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1855:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1860:2: ( (otherlv_1= 'const' ( (lv_name_2_0= RULE_ID ) ) ( ( ( '=' )=>otherlv_3= '=' ) ( (lv_value_4_0= ruleXExpression ) ) )? ) | ( ( (lv_writable_5_0= 'var' ) ) ( (lv_name_6_0= RULE_ID ) ) ( ( ( '=' )=>otherlv_7= '=' ) ( (lv_value_8_0= ruleXExpression ) ) )? ) )
            int alt36=2;
            int LA36_0 = input.LA(1);

            if ( (LA36_0==40) ) {
                alt36=1;
            }
            else if ( (LA36_0==41) ) {
                alt36=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 36, 0, input);

                throw nvae;
            }
            switch (alt36) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1860:3: (otherlv_1= 'const' ( (lv_name_2_0= RULE_ID ) ) ( ( ( '=' )=>otherlv_3= '=' ) ( (lv_value_4_0= ruleXExpression ) ) )? )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1860:3: (otherlv_1= 'const' ( (lv_name_2_0= RULE_ID ) ) ( ( ( '=' )=>otherlv_3= '=' ) ( (lv_value_4_0= ruleXExpression ) ) )? )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1860:5: otherlv_1= 'const' ( (lv_name_2_0= RULE_ID ) ) ( ( ( '=' )=>otherlv_3= '=' ) ( (lv_value_4_0= ruleXExpression ) ) )?
                    {
                    otherlv_1=(Token)match(input,40,FOLLOW_40_in_ruleXVariableDeclaration3655); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getXVariableDeclarationAccess().getConstKeyword_1_0_0());
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1864:1: ( (lv_name_2_0= RULE_ID ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1865:1: (lv_name_2_0= RULE_ID )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1865:1: (lv_name_2_0= RULE_ID )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1866:3: lv_name_2_0= RULE_ID
                    {
                    lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleXVariableDeclaration3672); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_2_0, grammarAccess.getXVariableDeclarationAccess().getNameIDTerminalRuleCall_1_0_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXVariableDeclarationRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_2_0, 
                              		"ID");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1882:2: ( ( ( '=' )=>otherlv_3= '=' ) ( (lv_value_4_0= ruleXExpression ) ) )?
                    int alt34=2;
                    alt34 = dfa34.predict(input);
                    switch (alt34) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1882:3: ( ( '=' )=>otherlv_3= '=' ) ( (lv_value_4_0= ruleXExpression ) )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1882:3: ( ( '=' )=>otherlv_3= '=' )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1882:4: ( '=' )=>otherlv_3= '='
                            {
                            otherlv_3=(Token)match(input,36,FOLLOW_36_in_ruleXVariableDeclaration3698); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_3, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_1_0_2_0());
                                  
                            }

                            }

                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1887:2: ( (lv_value_4_0= ruleXExpression ) )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1888:1: (lv_value_4_0= ruleXExpression )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1888:1: (lv_value_4_0= ruleXExpression )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1889:3: lv_value_4_0= ruleXExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getValueXExpressionParserRuleCall_1_0_2_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXExpression_in_ruleXVariableDeclaration3720);
                            lv_value_4_0=ruleXExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"value",
                                      		lv_value_4_0, 
                                      		"XExpression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1906:6: ( ( (lv_writable_5_0= 'var' ) ) ( (lv_name_6_0= RULE_ID ) ) ( ( ( '=' )=>otherlv_7= '=' ) ( (lv_value_8_0= ruleXExpression ) ) )? )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1906:6: ( ( (lv_writable_5_0= 'var' ) ) ( (lv_name_6_0= RULE_ID ) ) ( ( ( '=' )=>otherlv_7= '=' ) ( (lv_value_8_0= ruleXExpression ) ) )? )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1906:7: ( (lv_writable_5_0= 'var' ) ) ( (lv_name_6_0= RULE_ID ) ) ( ( ( '=' )=>otherlv_7= '=' ) ( (lv_value_8_0= ruleXExpression ) ) )?
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1906:7: ( (lv_writable_5_0= 'var' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1907:1: (lv_writable_5_0= 'var' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1907:1: (lv_writable_5_0= 'var' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1908:3: lv_writable_5_0= 'var'
                    {
                    lv_writable_5_0=(Token)match(input,41,FOLLOW_41_in_ruleXVariableDeclaration3748); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_writable_5_0, grammarAccess.getXVariableDeclarationAccess().getWritableVarKeyword_1_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXVariableDeclarationRule());
                      	        }
                             		setWithLastConsumed(current, "writable", true, "var");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1921:2: ( (lv_name_6_0= RULE_ID ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1922:1: (lv_name_6_0= RULE_ID )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1922:1: (lv_name_6_0= RULE_ID )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1923:3: lv_name_6_0= RULE_ID
                    {
                    lv_name_6_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleXVariableDeclaration3778); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_6_0, grammarAccess.getXVariableDeclarationAccess().getNameIDTerminalRuleCall_1_1_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXVariableDeclarationRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_6_0, 
                              		"ID");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1939:2: ( ( ( '=' )=>otherlv_7= '=' ) ( (lv_value_8_0= ruleXExpression ) ) )?
                    int alt35=2;
                    alt35 = dfa35.predict(input);
                    switch (alt35) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1939:3: ( ( '=' )=>otherlv_7= '=' ) ( (lv_value_8_0= ruleXExpression ) )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1939:3: ( ( '=' )=>otherlv_7= '=' )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1939:4: ( '=' )=>otherlv_7= '='
                            {
                            otherlv_7=(Token)match(input,36,FOLLOW_36_in_ruleXVariableDeclaration3804); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_7, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_1_1_2_0());
                                  
                            }

                            }

                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1944:2: ( (lv_value_8_0= ruleXExpression ) )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1945:1: (lv_value_8_0= ruleXExpression )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1945:1: (lv_value_8_0= ruleXExpression )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1946:3: lv_value_8_0= ruleXExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getValueXExpressionParserRuleCall_1_1_2_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXExpression_in_ruleXVariableDeclaration3826);
                            lv_value_8_0=ruleXExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"value",
                                      		lv_value_8_0, 
                                      		"XExpression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXVariableDeclaration"


    // $ANTLR start "entryRuleXFunctionDeclaration"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1970:1: entryRuleXFunctionDeclaration returns [EObject current=null] : iv_ruleXFunctionDeclaration= ruleXFunctionDeclaration EOF ;
    public final EObject entryRuleXFunctionDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXFunctionDeclaration = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1971:2: (iv_ruleXFunctionDeclaration= ruleXFunctionDeclaration EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1972:2: iv_ruleXFunctionDeclaration= ruleXFunctionDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXFunctionDeclarationRule()); 
            }
            pushFollow(FOLLOW_ruleXFunctionDeclaration_in_entryRuleXFunctionDeclaration3866);
            iv_ruleXFunctionDeclaration=ruleXFunctionDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXFunctionDeclaration; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXFunctionDeclaration3876); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXFunctionDeclaration"


    // $ANTLR start "ruleXFunctionDeclaration"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1979:1: ruleXFunctionDeclaration returns [EObject current=null] : ( () ( ( 'function' )=>otherlv_1= 'function' ) ( (lv_name_2_0= RULE_ID ) )? otherlv_3= '(' ( ( (lv_arguments_4_0= ruleFunctionArgument ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleFunctionArgument ) ) )* )? otherlv_7= ')' ( (lv_body_8_0= ruleXBlockExpression ) ) ) ;
    public final EObject ruleXFunctionDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        EObject lv_arguments_4_0 = null;

        EObject lv_arguments_6_0 = null;

        EObject lv_body_8_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1982:28: ( ( () ( ( 'function' )=>otherlv_1= 'function' ) ( (lv_name_2_0= RULE_ID ) )? otherlv_3= '(' ( ( (lv_arguments_4_0= ruleFunctionArgument ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleFunctionArgument ) ) )* )? otherlv_7= ')' ( (lv_body_8_0= ruleXBlockExpression ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1983:1: ( () ( ( 'function' )=>otherlv_1= 'function' ) ( (lv_name_2_0= RULE_ID ) )? otherlv_3= '(' ( ( (lv_arguments_4_0= ruleFunctionArgument ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleFunctionArgument ) ) )* )? otherlv_7= ')' ( (lv_body_8_0= ruleXBlockExpression ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1983:1: ( () ( ( 'function' )=>otherlv_1= 'function' ) ( (lv_name_2_0= RULE_ID ) )? otherlv_3= '(' ( ( (lv_arguments_4_0= ruleFunctionArgument ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleFunctionArgument ) ) )* )? otherlv_7= ')' ( (lv_body_8_0= ruleXBlockExpression ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1983:2: () ( ( 'function' )=>otherlv_1= 'function' ) ( (lv_name_2_0= RULE_ID ) )? otherlv_3= '(' ( ( (lv_arguments_4_0= ruleFunctionArgument ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleFunctionArgument ) ) )* )? otherlv_7= ')' ( (lv_body_8_0= ruleXBlockExpression ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1983:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1984:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXFunctionDeclarationAccess().getXFunctionDeclarationAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1989:2: ( ( 'function' )=>otherlv_1= 'function' )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1989:3: ( 'function' )=>otherlv_1= 'function'
            {
            otherlv_1=(Token)match(input,42,FOLLOW_42_in_ruleXFunctionDeclaration3930); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXFunctionDeclarationAccess().getFunctionKeyword_1());
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1994:2: ( (lv_name_2_0= RULE_ID ) )?
            int alt37=2;
            int LA37_0 = input.LA(1);

            if ( (LA37_0==RULE_ID) ) {
                alt37=1;
            }
            switch (alt37) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1995:1: (lv_name_2_0= RULE_ID )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1995:1: (lv_name_2_0= RULE_ID )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1996:3: lv_name_2_0= RULE_ID
                    {
                    lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleXFunctionDeclaration3948); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_2_0, grammarAccess.getXFunctionDeclarationAccess().getNameIDTerminalRuleCall_2_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXFunctionDeclarationRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_2_0, 
                              		"ID");
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_3=(Token)match(input,17,FOLLOW_17_in_ruleXFunctionDeclaration3966); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getXFunctionDeclarationAccess().getLeftParenthesisKeyword_3());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2016:1: ( ( (lv_arguments_4_0= ruleFunctionArgument ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleFunctionArgument ) ) )* )?
            int alt39=2;
            int LA39_0 = input.LA(1);

            if ( (LA39_0==RULE_ID||LA39_0==43) ) {
                alt39=1;
            }
            switch (alt39) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2016:2: ( (lv_arguments_4_0= ruleFunctionArgument ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleFunctionArgument ) ) )*
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2016:2: ( (lv_arguments_4_0= ruleFunctionArgument ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2017:1: (lv_arguments_4_0= ruleFunctionArgument )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2017:1: (lv_arguments_4_0= ruleFunctionArgument )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2018:3: lv_arguments_4_0= ruleFunctionArgument
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXFunctionDeclarationAccess().getArgumentsFunctionArgumentParserRuleCall_4_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleFunctionArgument_in_ruleXFunctionDeclaration3988);
                    lv_arguments_4_0=ruleFunctionArgument();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXFunctionDeclarationRule());
                      	        }
                             		add(
                             			current, 
                             			"arguments",
                              		lv_arguments_4_0, 
                              		"FunctionArgument");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2034:2: (otherlv_5= ',' ( (lv_arguments_6_0= ruleFunctionArgument ) ) )*
                    loop38:
                    do {
                        int alt38=2;
                        int LA38_0 = input.LA(1);

                        if ( (LA38_0==18) ) {
                            alt38=1;
                        }


                        switch (alt38) {
                    	case 1 :
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2034:4: otherlv_5= ',' ( (lv_arguments_6_0= ruleFunctionArgument ) )
                    	    {
                    	    otherlv_5=(Token)match(input,18,FOLLOW_18_in_ruleXFunctionDeclaration4001); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_5, grammarAccess.getXFunctionDeclarationAccess().getCommaKeyword_4_1_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2038:1: ( (lv_arguments_6_0= ruleFunctionArgument ) )
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2039:1: (lv_arguments_6_0= ruleFunctionArgument )
                    	    {
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2039:1: (lv_arguments_6_0= ruleFunctionArgument )
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2040:3: lv_arguments_6_0= ruleFunctionArgument
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXFunctionDeclarationAccess().getArgumentsFunctionArgumentParserRuleCall_4_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleFunctionArgument_in_ruleXFunctionDeclaration4022);
                    	    lv_arguments_6_0=ruleFunctionArgument();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXFunctionDeclarationRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"arguments",
                    	              		lv_arguments_6_0, 
                    	              		"FunctionArgument");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop38;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_7=(Token)match(input,19,FOLLOW_19_in_ruleXFunctionDeclaration4038); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getXFunctionDeclarationAccess().getRightParenthesisKeyword_5());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2060:1: ( (lv_body_8_0= ruleXBlockExpression ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2061:1: (lv_body_8_0= ruleXBlockExpression )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2061:1: (lv_body_8_0= ruleXBlockExpression )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2062:3: lv_body_8_0= ruleXBlockExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXFunctionDeclarationAccess().getBodyXBlockExpressionParserRuleCall_6_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXBlockExpression_in_ruleXFunctionDeclaration4059);
            lv_body_8_0=ruleXBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXFunctionDeclarationRule());
              	        }
                     		set(
                     			current, 
                     			"body",
                      		lv_body_8_0, 
                      		"XBlockExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXFunctionDeclaration"


    // $ANTLR start "entryRuleFunctionArgument"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2086:1: entryRuleFunctionArgument returns [EObject current=null] : iv_ruleFunctionArgument= ruleFunctionArgument EOF ;
    public final EObject entryRuleFunctionArgument() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFunctionArgument = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2087:2: (iv_ruleFunctionArgument= ruleFunctionArgument EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2088:2: iv_ruleFunctionArgument= ruleFunctionArgument EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getFunctionArgumentRule()); 
            }
            pushFollow(FOLLOW_ruleFunctionArgument_in_entryRuleFunctionArgument4095);
            iv_ruleFunctionArgument=ruleFunctionArgument();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleFunctionArgument; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionArgument4105); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFunctionArgument"


    // $ANTLR start "ruleFunctionArgument"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2095:1: ruleFunctionArgument returns [EObject current=null] : ( () ( ( ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleXExpression ) ) )? ) | ( (lv_any_4_0= '...' ) ) ) ) ;
    public final EObject ruleFunctionArgument() throws RecognitionException {
        EObject current = null;

        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token lv_any_4_0=null;
        EObject lv_value_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2098:28: ( ( () ( ( ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleXExpression ) ) )? ) | ( (lv_any_4_0= '...' ) ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2099:1: ( () ( ( ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleXExpression ) ) )? ) | ( (lv_any_4_0= '...' ) ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2099:1: ( () ( ( ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleXExpression ) ) )? ) | ( (lv_any_4_0= '...' ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2099:2: () ( ( ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleXExpression ) ) )? ) | ( (lv_any_4_0= '...' ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2099:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2100:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getFunctionArgumentAccess().getFunctionArgumentAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2105:2: ( ( ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleXExpression ) ) )? ) | ( (lv_any_4_0= '...' ) ) )
            int alt41=2;
            int LA41_0 = input.LA(1);

            if ( (LA41_0==RULE_ID) ) {
                alt41=1;
            }
            else if ( (LA41_0==43) ) {
                alt41=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 41, 0, input);

                throw nvae;
            }
            switch (alt41) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2105:3: ( ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleXExpression ) ) )? )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2105:3: ( ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleXExpression ) ) )? )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2105:4: ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleXExpression ) ) )?
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2105:4: ( (lv_name_1_0= RULE_ID ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2106:1: (lv_name_1_0= RULE_ID )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2106:1: (lv_name_1_0= RULE_ID )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2107:3: lv_name_1_0= RULE_ID
                    {
                    lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFunctionArgument4158); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_1_0, grammarAccess.getFunctionArgumentAccess().getNameIDTerminalRuleCall_1_0_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getFunctionArgumentRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_1_0, 
                              		"ID");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2123:2: (otherlv_2= '=' ( (lv_value_3_0= ruleXExpression ) ) )?
                    int alt40=2;
                    int LA40_0 = input.LA(1);

                    if ( (LA40_0==36) ) {
                        alt40=1;
                    }
                    switch (alt40) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2123:4: otherlv_2= '=' ( (lv_value_3_0= ruleXExpression ) )
                            {
                            otherlv_2=(Token)match(input,36,FOLLOW_36_in_ruleFunctionArgument4176); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_2, grammarAccess.getFunctionArgumentAccess().getEqualsSignKeyword_1_0_1_0());
                                  
                            }
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2127:1: ( (lv_value_3_0= ruleXExpression ) )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2128:1: (lv_value_3_0= ruleXExpression )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2128:1: (lv_value_3_0= ruleXExpression )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2129:3: lv_value_3_0= ruleXExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getFunctionArgumentAccess().getValueXExpressionParserRuleCall_1_0_1_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXExpression_in_ruleFunctionArgument4197);
                            lv_value_3_0=ruleXExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getFunctionArgumentRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"value",
                                      		lv_value_3_0, 
                                      		"XExpression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2146:6: ( (lv_any_4_0= '...' ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2146:6: ( (lv_any_4_0= '...' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2147:1: (lv_any_4_0= '...' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2147:1: (lv_any_4_0= '...' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2148:3: lv_any_4_0= '...'
                    {
                    lv_any_4_0=(Token)match(input,43,FOLLOW_43_in_ruleFunctionArgument4224); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_any_4_0, grammarAccess.getFunctionArgumentAccess().getAnyFullStopFullStopFullStopKeyword_1_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getFunctionArgumentRule());
                      	        }
                             		setWithLastConsumed(current, "any", true, "...");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFunctionArgument"


    // $ANTLR start "entryRuleXExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2169:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
    public final EObject entryRuleXExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2170:2: (iv_ruleXExpression= ruleXExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2171:2: iv_ruleXExpression= ruleXExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXExpression_in_entryRuleXExpression4274);
            iv_ruleXExpression=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpression4284); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXExpression"


    // $ANTLR start "ruleXExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2178:1: ruleXExpression returns [EObject current=null] : (this_XAssignExpression_0= ruleXAssignExpression | this_XStrictBlockExpression_1= ruleXStrictBlockExpression ) ;
    public final EObject ruleXExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XAssignExpression_0 = null;

        EObject this_XStrictBlockExpression_1 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2181:28: ( (this_XAssignExpression_0= ruleXAssignExpression | this_XStrictBlockExpression_1= ruleXStrictBlockExpression ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2182:1: (this_XAssignExpression_0= ruleXAssignExpression | this_XStrictBlockExpression_1= ruleXStrictBlockExpression )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2182:1: (this_XAssignExpression_0= ruleXAssignExpression | this_XStrictBlockExpression_1= ruleXStrictBlockExpression )
            int alt42=2;
            int LA42_0 = input.LA(1);

            if ( ((LA42_0>=RULE_ID && LA42_0<=RULE_VERBATIM_STRING)||LA42_0==17||LA42_0==34||LA42_0==42||LA42_0==56||LA42_0==65||(LA42_0>=70 && LA42_0<=73)||(LA42_0>=81 && LA42_0<=88)||(LA42_0>=90 && LA42_0<=91)) ) {
                alt42=1;
            }
            else if ( (LA42_0==79) ) {
                alt42=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 42, 0, input);

                throw nvae;
            }
            switch (alt42) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2183:5: this_XAssignExpression_0= ruleXAssignExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignExpressionParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXAssignExpression_in_ruleXExpression4331);
                    this_XAssignExpression_0=ruleXAssignExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XAssignExpression_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2193:5: this_XStrictBlockExpression_1= ruleXStrictBlockExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXExpressionAccess().getXStrictBlockExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXStrictBlockExpression_in_ruleXExpression4358);
                    this_XStrictBlockExpression_1=ruleXStrictBlockExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XStrictBlockExpression_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXExpression"


    // $ANTLR start "entryRuleXAssignExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2209:1: entryRuleXAssignExpression returns [EObject current=null] : iv_ruleXAssignExpression= ruleXAssignExpression EOF ;
    public final EObject entryRuleXAssignExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXAssignExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2210:2: (iv_ruleXAssignExpression= ruleXAssignExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2211:2: iv_ruleXAssignExpression= ruleXAssignExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXAssignExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXAssignExpression_in_entryRuleXAssignExpression4393);
            iv_ruleXAssignExpression=ruleXAssignExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXAssignExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXAssignExpression4403); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXAssignExpression"


    // $ANTLR start "ruleXAssignExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2218:1: ruleXAssignExpression returns [EObject current=null] : (this_XBoolExpression_0= ruleXBoolExpression ( ( ( () ( ( ( '=' | '+=' | '-=' | '*=' | '/=' ) ) ) ( ( ruleXBoolExpression ) ) ) )=> ( () ( ( (lv_operator_2_1= '=' | lv_operator_2_2= '+=' | lv_operator_2_3= '-=' | lv_operator_2_4= '*=' | lv_operator_2_5= '/=' ) ) ) ( (lv_right_3_0= ruleXBoolExpression ) ) ) )* ) ;
    public final EObject ruleXAssignExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_1=null;
        Token lv_operator_2_2=null;
        Token lv_operator_2_3=null;
        Token lv_operator_2_4=null;
        Token lv_operator_2_5=null;
        EObject this_XBoolExpression_0 = null;

        EObject lv_right_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2221:28: ( (this_XBoolExpression_0= ruleXBoolExpression ( ( ( () ( ( ( '=' | '+=' | '-=' | '*=' | '/=' ) ) ) ( ( ruleXBoolExpression ) ) ) )=> ( () ( ( (lv_operator_2_1= '=' | lv_operator_2_2= '+=' | lv_operator_2_3= '-=' | lv_operator_2_4= '*=' | lv_operator_2_5= '/=' ) ) ) ( (lv_right_3_0= ruleXBoolExpression ) ) ) )* ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2222:1: (this_XBoolExpression_0= ruleXBoolExpression ( ( ( () ( ( ( '=' | '+=' | '-=' | '*=' | '/=' ) ) ) ( ( ruleXBoolExpression ) ) ) )=> ( () ( ( (lv_operator_2_1= '=' | lv_operator_2_2= '+=' | lv_operator_2_3= '-=' | lv_operator_2_4= '*=' | lv_operator_2_5= '/=' ) ) ) ( (lv_right_3_0= ruleXBoolExpression ) ) ) )* )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2222:1: (this_XBoolExpression_0= ruleXBoolExpression ( ( ( () ( ( ( '=' | '+=' | '-=' | '*=' | '/=' ) ) ) ( ( ruleXBoolExpression ) ) ) )=> ( () ( ( (lv_operator_2_1= '=' | lv_operator_2_2= '+=' | lv_operator_2_3= '-=' | lv_operator_2_4= '*=' | lv_operator_2_5= '/=' ) ) ) ( (lv_right_3_0= ruleXBoolExpression ) ) ) )* )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2223:5: this_XBoolExpression_0= ruleXBoolExpression ( ( ( () ( ( ( '=' | '+=' | '-=' | '*=' | '/=' ) ) ) ( ( ruleXBoolExpression ) ) ) )=> ( () ( ( (lv_operator_2_1= '=' | lv_operator_2_2= '+=' | lv_operator_2_3= '-=' | lv_operator_2_4= '*=' | lv_operator_2_5= '/=' ) ) ) ( (lv_right_3_0= ruleXBoolExpression ) ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXAssignExpressionAccess().getXBoolExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXBoolExpression_in_ruleXAssignExpression4450);
            this_XBoolExpression_0=ruleXBoolExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XBoolExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2231:1: ( ( ( () ( ( ( '=' | '+=' | '-=' | '*=' | '/=' ) ) ) ( ( ruleXBoolExpression ) ) ) )=> ( () ( ( (lv_operator_2_1= '=' | lv_operator_2_2= '+=' | lv_operator_2_3= '-=' | lv_operator_2_4= '*=' | lv_operator_2_5= '/=' ) ) ) ( (lv_right_3_0= ruleXBoolExpression ) ) ) )*
            loop44:
            do {
                int alt44=2;
                switch ( input.LA(1) ) {
                case 36:
                    {
                    int LA44_2 = input.LA(2);

                    if ( (synpred5_InternalUnicornDSL()) ) {
                        alt44=1;
                    }


                    }
                    break;
                case 44:
                    {
                    int LA44_3 = input.LA(2);

                    if ( (synpred5_InternalUnicornDSL()) ) {
                        alt44=1;
                    }


                    }
                    break;
                case 45:
                    {
                    int LA44_4 = input.LA(2);

                    if ( (synpred5_InternalUnicornDSL()) ) {
                        alt44=1;
                    }


                    }
                    break;
                case 46:
                    {
                    int LA44_5 = input.LA(2);

                    if ( (synpred5_InternalUnicornDSL()) ) {
                        alt44=1;
                    }


                    }
                    break;
                case 47:
                    {
                    int LA44_6 = input.LA(2);

                    if ( (synpred5_InternalUnicornDSL()) ) {
                        alt44=1;
                    }


                    }
                    break;

                }

                switch (alt44) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2231:2: ( ( () ( ( ( '=' | '+=' | '-=' | '*=' | '/=' ) ) ) ( ( ruleXBoolExpression ) ) ) )=> ( () ( ( (lv_operator_2_1= '=' | lv_operator_2_2= '+=' | lv_operator_2_3= '-=' | lv_operator_2_4= '*=' | lv_operator_2_5= '/=' ) ) ) ( (lv_right_3_0= ruleXBoolExpression ) ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2257:6: ( () ( ( (lv_operator_2_1= '=' | lv_operator_2_2= '+=' | lv_operator_2_3= '-=' | lv_operator_2_4= '*=' | lv_operator_2_5= '/=' ) ) ) ( (lv_right_3_0= ruleXBoolExpression ) ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2257:7: () ( ( (lv_operator_2_1= '=' | lv_operator_2_2= '+=' | lv_operator_2_3= '-=' | lv_operator_2_4= '*=' | lv_operator_2_5= '/=' ) ) ) ( (lv_right_3_0= ruleXBoolExpression ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2257:7: ()
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2258:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXAssignExpressionAccess().getXAssignExpressionLeftAction_1_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2263:2: ( ( (lv_operator_2_1= '=' | lv_operator_2_2= '+=' | lv_operator_2_3= '-=' | lv_operator_2_4= '*=' | lv_operator_2_5= '/=' ) ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2264:1: ( (lv_operator_2_1= '=' | lv_operator_2_2= '+=' | lv_operator_2_3= '-=' | lv_operator_2_4= '*=' | lv_operator_2_5= '/=' ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2264:1: ( (lv_operator_2_1= '=' | lv_operator_2_2= '+=' | lv_operator_2_3= '-=' | lv_operator_2_4= '*=' | lv_operator_2_5= '/=' ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2265:1: (lv_operator_2_1= '=' | lv_operator_2_2= '+=' | lv_operator_2_3= '-=' | lv_operator_2_4= '*=' | lv_operator_2_5= '/=' )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2265:1: (lv_operator_2_1= '=' | lv_operator_2_2= '+=' | lv_operator_2_3= '-=' | lv_operator_2_4= '*=' | lv_operator_2_5= '/=' )
            	    int alt43=5;
            	    switch ( input.LA(1) ) {
            	    case 36:
            	        {
            	        alt43=1;
            	        }
            	        break;
            	    case 44:
            	        {
            	        alt43=2;
            	        }
            	        break;
            	    case 45:
            	        {
            	        alt43=3;
            	        }
            	        break;
            	    case 46:
            	        {
            	        alt43=4;
            	        }
            	        break;
            	    case 47:
            	        {
            	        alt43=5;
            	        }
            	        break;
            	    default:
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 43, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt43) {
            	        case 1 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2266:3: lv_operator_2_1= '='
            	            {
            	            lv_operator_2_1=(Token)match(input,36,FOLLOW_36_in_ruleXAssignExpression4572); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_operator_2_1, grammarAccess.getXAssignExpressionAccess().getOperatorEqualsSignKeyword_1_0_1_0_0());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getXAssignExpressionRule());
            	              	        }
            	                     		setWithLastConsumed(current, "operator", lv_operator_2_1, null);
            	              	    
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2278:8: lv_operator_2_2= '+='
            	            {
            	            lv_operator_2_2=(Token)match(input,44,FOLLOW_44_in_ruleXAssignExpression4601); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_operator_2_2, grammarAccess.getXAssignExpressionAccess().getOperatorPlusSignEqualsSignKeyword_1_0_1_0_1());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getXAssignExpressionRule());
            	              	        }
            	                     		setWithLastConsumed(current, "operator", lv_operator_2_2, null);
            	              	    
            	            }

            	            }
            	            break;
            	        case 3 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2290:8: lv_operator_2_3= '-='
            	            {
            	            lv_operator_2_3=(Token)match(input,45,FOLLOW_45_in_ruleXAssignExpression4630); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_operator_2_3, grammarAccess.getXAssignExpressionAccess().getOperatorHyphenMinusEqualsSignKeyword_1_0_1_0_2());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getXAssignExpressionRule());
            	              	        }
            	                     		setWithLastConsumed(current, "operator", lv_operator_2_3, null);
            	              	    
            	            }

            	            }
            	            break;
            	        case 4 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2302:8: lv_operator_2_4= '*='
            	            {
            	            lv_operator_2_4=(Token)match(input,46,FOLLOW_46_in_ruleXAssignExpression4659); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_operator_2_4, grammarAccess.getXAssignExpressionAccess().getOperatorAsteriskEqualsSignKeyword_1_0_1_0_3());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getXAssignExpressionRule());
            	              	        }
            	                     		setWithLastConsumed(current, "operator", lv_operator_2_4, null);
            	              	    
            	            }

            	            }
            	            break;
            	        case 5 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2314:8: lv_operator_2_5= '/='
            	            {
            	            lv_operator_2_5=(Token)match(input,47,FOLLOW_47_in_ruleXAssignExpression4688); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_operator_2_5, grammarAccess.getXAssignExpressionAccess().getOperatorSolidusEqualsSignKeyword_1_0_1_0_4());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getXAssignExpressionRule());
            	              	        }
            	                     		setWithLastConsumed(current, "operator", lv_operator_2_5, null);
            	              	    
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }

            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2329:2: ( (lv_right_3_0= ruleXBoolExpression ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2330:1: (lv_right_3_0= ruleXBoolExpression )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2330:1: (lv_right_3_0= ruleXBoolExpression )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2331:3: lv_right_3_0= ruleXBoolExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXAssignExpressionAccess().getRightXBoolExpressionParserRuleCall_1_0_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXBoolExpression_in_ruleXAssignExpression4725);
            	    lv_right_3_0=ruleXBoolExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXAssignExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"right",
            	              		lv_right_3_0, 
            	              		"XBoolExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop44;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXAssignExpression"


    // $ANTLR start "entryRuleXBoolExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2355:1: entryRuleXBoolExpression returns [EObject current=null] : iv_ruleXBoolExpression= ruleXBoolExpression EOF ;
    public final EObject entryRuleXBoolExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXBoolExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2356:2: (iv_ruleXBoolExpression= ruleXBoolExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2357:2: iv_ruleXBoolExpression= ruleXBoolExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXBoolExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXBoolExpression_in_entryRuleXBoolExpression4764);
            iv_ruleXBoolExpression=ruleXBoolExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXBoolExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXBoolExpression4774); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXBoolExpression"


    // $ANTLR start "ruleXBoolExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2364:1: ruleXBoolExpression returns [EObject current=null] : (this_XComparativeExpression_0= ruleXComparativeExpression ( ( ( () ( ( ruleBoolOps ) ) ( ( ruleXComparativeExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleBoolOps ) ) ( (lv_rightOperand_3_0= ruleXComparativeExpression ) ) ) )* ) ;
    public final EObject ruleXBoolExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XComparativeExpression_0 = null;

        AntlrDatatypeRuleToken lv_operator_2_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2367:28: ( (this_XComparativeExpression_0= ruleXComparativeExpression ( ( ( () ( ( ruleBoolOps ) ) ( ( ruleXComparativeExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleBoolOps ) ) ( (lv_rightOperand_3_0= ruleXComparativeExpression ) ) ) )* ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2368:1: (this_XComparativeExpression_0= ruleXComparativeExpression ( ( ( () ( ( ruleBoolOps ) ) ( ( ruleXComparativeExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleBoolOps ) ) ( (lv_rightOperand_3_0= ruleXComparativeExpression ) ) ) )* )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2368:1: (this_XComparativeExpression_0= ruleXComparativeExpression ( ( ( () ( ( ruleBoolOps ) ) ( ( ruleXComparativeExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleBoolOps ) ) ( (lv_rightOperand_3_0= ruleXComparativeExpression ) ) ) )* )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2369:5: this_XComparativeExpression_0= ruleXComparativeExpression ( ( ( () ( ( ruleBoolOps ) ) ( ( ruleXComparativeExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleBoolOps ) ) ( (lv_rightOperand_3_0= ruleXComparativeExpression ) ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXBoolExpressionAccess().getXComparativeExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXComparativeExpression_in_ruleXBoolExpression4821);
            this_XComparativeExpression_0=ruleXComparativeExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XComparativeExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2377:1: ( ( ( () ( ( ruleBoolOps ) ) ( ( ruleXComparativeExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleBoolOps ) ) ( (lv_rightOperand_3_0= ruleXComparativeExpression ) ) ) )*
            loop45:
            do {
                int alt45=2;
                int LA45_0 = input.LA(1);

                if ( (LA45_0==48) ) {
                    int LA45_2 = input.LA(2);

                    if ( (synpred6_InternalUnicornDSL()) ) {
                        alt45=1;
                    }


                }
                else if ( (LA45_0==49) ) {
                    int LA45_3 = input.LA(2);

                    if ( (synpred6_InternalUnicornDSL()) ) {
                        alt45=1;
                    }


                }


                switch (alt45) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2377:2: ( ( () ( ( ruleBoolOps ) ) ( ( ruleXComparativeExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleBoolOps ) ) ( (lv_rightOperand_3_0= ruleXComparativeExpression ) ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2386:6: ( () ( (lv_operator_2_0= ruleBoolOps ) ) ( (lv_rightOperand_3_0= ruleXComparativeExpression ) ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2386:7: () ( (lv_operator_2_0= ruleBoolOps ) ) ( (lv_rightOperand_3_0= ruleXComparativeExpression ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2386:7: ()
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2387:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXBoolExpressionAccess().getXBoolExpressionLeftOperandAction_1_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2392:2: ( (lv_operator_2_0= ruleBoolOps ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2393:1: (lv_operator_2_0= ruleBoolOps )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2393:1: (lv_operator_2_0= ruleBoolOps )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2394:3: lv_operator_2_0= ruleBoolOps
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXBoolExpressionAccess().getOperatorBoolOpsParserRuleCall_1_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleBoolOps_in_ruleXBoolExpression4878);
            	    lv_operator_2_0=ruleBoolOps();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXBoolExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"operator",
            	              		lv_operator_2_0, 
            	              		"BoolOps");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2410:2: ( (lv_rightOperand_3_0= ruleXComparativeExpression ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2411:1: (lv_rightOperand_3_0= ruleXComparativeExpression )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2411:1: (lv_rightOperand_3_0= ruleXComparativeExpression )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2412:3: lv_rightOperand_3_0= ruleXComparativeExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXBoolExpressionAccess().getRightOperandXComparativeExpressionParserRuleCall_1_0_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXComparativeExpression_in_ruleXBoolExpression4899);
            	    lv_rightOperand_3_0=ruleXComparativeExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXBoolExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XComparativeExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop45;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXBoolExpression"


    // $ANTLR start "entryRuleBoolOps"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2436:1: entryRuleBoolOps returns [String current=null] : iv_ruleBoolOps= ruleBoolOps EOF ;
    public final String entryRuleBoolOps() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleBoolOps = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2437:2: (iv_ruleBoolOps= ruleBoolOps EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2438:2: iv_ruleBoolOps= ruleBoolOps EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBoolOpsRule()); 
            }
            pushFollow(FOLLOW_ruleBoolOps_in_entryRuleBoolOps4939);
            iv_ruleBoolOps=ruleBoolOps();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBoolOps.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleBoolOps4950); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBoolOps"


    // $ANTLR start "ruleBoolOps"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2445:1: ruleBoolOps returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '&&' | kw= '||' ) ;
    public final AntlrDatatypeRuleToken ruleBoolOps() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2448:28: ( (kw= '&&' | kw= '||' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2449:1: (kw= '&&' | kw= '||' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2449:1: (kw= '&&' | kw= '||' )
            int alt46=2;
            int LA46_0 = input.LA(1);

            if ( (LA46_0==48) ) {
                alt46=1;
            }
            else if ( (LA46_0==49) ) {
                alt46=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 46, 0, input);

                throw nvae;
            }
            switch (alt46) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2450:2: kw= '&&'
                    {
                    kw=(Token)match(input,48,FOLLOW_48_in_ruleBoolOps4988); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getBoolOpsAccess().getAmpersandAmpersandKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2457:2: kw= '||'
                    {
                    kw=(Token)match(input,49,FOLLOW_49_in_ruleBoolOps5007); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getBoolOpsAccess().getVerticalLineVerticalLineKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBoolOps"


    // $ANTLR start "entryRuleXComparativeExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2470:1: entryRuleXComparativeExpression returns [EObject current=null] : iv_ruleXComparativeExpression= ruleXComparativeExpression EOF ;
    public final EObject entryRuleXComparativeExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXComparativeExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2471:2: (iv_ruleXComparativeExpression= ruleXComparativeExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2472:2: iv_ruleXComparativeExpression= ruleXComparativeExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXComparativeExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXComparativeExpression_in_entryRuleXComparativeExpression5047);
            iv_ruleXComparativeExpression=ruleXComparativeExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXComparativeExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXComparativeExpression5057); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXComparativeExpression"


    // $ANTLR start "ruleXComparativeExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2479:1: ruleXComparativeExpression returns [EObject current=null] : (this_XAddExpression_0= ruleXAddExpression ( ( ( () ( ( ruleCompareOps ) ) ( ( ruleXAddExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleCompareOps ) ) ( (lv_rightOperand_3_0= ruleXAddExpression ) ) ) )* ) ;
    public final EObject ruleXComparativeExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XAddExpression_0 = null;

        AntlrDatatypeRuleToken lv_operator_2_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2482:28: ( (this_XAddExpression_0= ruleXAddExpression ( ( ( () ( ( ruleCompareOps ) ) ( ( ruleXAddExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleCompareOps ) ) ( (lv_rightOperand_3_0= ruleXAddExpression ) ) ) )* ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2483:1: (this_XAddExpression_0= ruleXAddExpression ( ( ( () ( ( ruleCompareOps ) ) ( ( ruleXAddExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleCompareOps ) ) ( (lv_rightOperand_3_0= ruleXAddExpression ) ) ) )* )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2483:1: (this_XAddExpression_0= ruleXAddExpression ( ( ( () ( ( ruleCompareOps ) ) ( ( ruleXAddExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleCompareOps ) ) ( (lv_rightOperand_3_0= ruleXAddExpression ) ) ) )* )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2484:5: this_XAddExpression_0= ruleXAddExpression ( ( ( () ( ( ruleCompareOps ) ) ( ( ruleXAddExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleCompareOps ) ) ( (lv_rightOperand_3_0= ruleXAddExpression ) ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXComparativeExpressionAccess().getXAddExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXAddExpression_in_ruleXComparativeExpression5104);
            this_XAddExpression_0=ruleXAddExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XAddExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2492:1: ( ( ( () ( ( ruleCompareOps ) ) ( ( ruleXAddExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleCompareOps ) ) ( (lv_rightOperand_3_0= ruleXAddExpression ) ) ) )*
            loop47:
            do {
                int alt47=2;
                alt47 = dfa47.predict(input);
                switch (alt47) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2492:2: ( ( () ( ( ruleCompareOps ) ) ( ( ruleXAddExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleCompareOps ) ) ( (lv_rightOperand_3_0= ruleXAddExpression ) ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2501:6: ( () ( (lv_operator_2_0= ruleCompareOps ) ) ( (lv_rightOperand_3_0= ruleXAddExpression ) ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2501:7: () ( (lv_operator_2_0= ruleCompareOps ) ) ( (lv_rightOperand_3_0= ruleXAddExpression ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2501:7: ()
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2502:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXComparativeExpressionAccess().getXComparativeExpressionLeftOperandAction_1_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2507:2: ( (lv_operator_2_0= ruleCompareOps ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2508:1: (lv_operator_2_0= ruleCompareOps )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2508:1: (lv_operator_2_0= ruleCompareOps )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2509:3: lv_operator_2_0= ruleCompareOps
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXComparativeExpressionAccess().getOperatorCompareOpsParserRuleCall_1_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleCompareOps_in_ruleXComparativeExpression5161);
            	    lv_operator_2_0=ruleCompareOps();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXComparativeExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"operator",
            	              		lv_operator_2_0, 
            	              		"CompareOps");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2525:2: ( (lv_rightOperand_3_0= ruleXAddExpression ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2526:1: (lv_rightOperand_3_0= ruleXAddExpression )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2526:1: (lv_rightOperand_3_0= ruleXAddExpression )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2527:3: lv_rightOperand_3_0= ruleXAddExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXComparativeExpressionAccess().getRightOperandXAddExpressionParserRuleCall_1_0_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXAddExpression_in_ruleXComparativeExpression5182);
            	    lv_rightOperand_3_0=ruleXAddExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXComparativeExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XAddExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop47;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXComparativeExpression"


    // $ANTLR start "entryRuleCompareOps"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2551:1: entryRuleCompareOps returns [String current=null] : iv_ruleCompareOps= ruleCompareOps EOF ;
    public final String entryRuleCompareOps() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleCompareOps = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2552:2: (iv_ruleCompareOps= ruleCompareOps EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2553:2: iv_ruleCompareOps= ruleCompareOps EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getCompareOpsRule()); 
            }
            pushFollow(FOLLOW_ruleCompareOps_in_entryRuleCompareOps5222);
            iv_ruleCompareOps=ruleCompareOps();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCompareOps.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleCompareOps5233); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCompareOps"


    // $ANTLR start "ruleCompareOps"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2560:1: ruleCompareOps returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>' | kw= '<' | kw= '<=' | kw= '>=' | kw= '<>' | kw= '!=' | kw= '==' ) ;
    public final AntlrDatatypeRuleToken ruleCompareOps() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2563:28: ( (kw= '>' | kw= '<' | kw= '<=' | kw= '>=' | kw= '<>' | kw= '!=' | kw= '==' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2564:1: (kw= '>' | kw= '<' | kw= '<=' | kw= '>=' | kw= '<>' | kw= '!=' | kw= '==' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2564:1: (kw= '>' | kw= '<' | kw= '<=' | kw= '>=' | kw= '<>' | kw= '!=' | kw= '==' )
            int alt48=7;
            switch ( input.LA(1) ) {
            case 23:
                {
                alt48=1;
                }
                break;
            case 22:
                {
                alt48=2;
                }
                break;
            case 50:
                {
                alt48=3;
                }
                break;
            case 51:
                {
                alt48=4;
                }
                break;
            case 52:
                {
                alt48=5;
                }
                break;
            case 53:
                {
                alt48=6;
                }
                break;
            case 54:
                {
                alt48=7;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 48, 0, input);

                throw nvae;
            }

            switch (alt48) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2565:2: kw= '>'
                    {
                    kw=(Token)match(input,23,FOLLOW_23_in_ruleCompareOps5271); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getCompareOpsAccess().getGreaterThanSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2572:2: kw= '<'
                    {
                    kw=(Token)match(input,22,FOLLOW_22_in_ruleCompareOps5290); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getCompareOpsAccess().getLessThanSignKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2579:2: kw= '<='
                    {
                    kw=(Token)match(input,50,FOLLOW_50_in_ruleCompareOps5309); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getCompareOpsAccess().getLessThanSignEqualsSignKeyword_2()); 
                          
                    }

                    }
                    break;
                case 4 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2586:2: kw= '>='
                    {
                    kw=(Token)match(input,51,FOLLOW_51_in_ruleCompareOps5328); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getCompareOpsAccess().getGreaterThanSignEqualsSignKeyword_3()); 
                          
                    }

                    }
                    break;
                case 5 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2593:2: kw= '<>'
                    {
                    kw=(Token)match(input,52,FOLLOW_52_in_ruleCompareOps5347); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getCompareOpsAccess().getLessThanSignGreaterThanSignKeyword_4()); 
                          
                    }

                    }
                    break;
                case 6 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2600:2: kw= '!='
                    {
                    kw=(Token)match(input,53,FOLLOW_53_in_ruleCompareOps5366); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getCompareOpsAccess().getExclamationMarkEqualsSignKeyword_5()); 
                          
                    }

                    }
                    break;
                case 7 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2607:2: kw= '=='
                    {
                    kw=(Token)match(input,54,FOLLOW_54_in_ruleCompareOps5385); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getCompareOpsAccess().getEqualsSignEqualsSignKeyword_6()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCompareOps"


    // $ANTLR start "entryRuleXAddExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2620:1: entryRuleXAddExpression returns [EObject current=null] : iv_ruleXAddExpression= ruleXAddExpression EOF ;
    public final EObject entryRuleXAddExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXAddExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2621:2: (iv_ruleXAddExpression= ruleXAddExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2622:2: iv_ruleXAddExpression= ruleXAddExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXAddExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXAddExpression_in_entryRuleXAddExpression5425);
            iv_ruleXAddExpression=ruleXAddExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXAddExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXAddExpression5435); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXAddExpression"


    // $ANTLR start "ruleXAddExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2629:1: ruleXAddExpression returns [EObject current=null] : (this_XMultExpression_0= ruleXMultExpression ( ( ( () ( ( ruleAddOps ) ) ( ( ruleXMultExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleAddOps ) ) ( (lv_rightOperand_3_0= ruleXMultExpression ) ) ) )* ) ;
    public final EObject ruleXAddExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XMultExpression_0 = null;

        AntlrDatatypeRuleToken lv_operator_2_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2632:28: ( (this_XMultExpression_0= ruleXMultExpression ( ( ( () ( ( ruleAddOps ) ) ( ( ruleXMultExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleAddOps ) ) ( (lv_rightOperand_3_0= ruleXMultExpression ) ) ) )* ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2633:1: (this_XMultExpression_0= ruleXMultExpression ( ( ( () ( ( ruleAddOps ) ) ( ( ruleXMultExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleAddOps ) ) ( (lv_rightOperand_3_0= ruleXMultExpression ) ) ) )* )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2633:1: (this_XMultExpression_0= ruleXMultExpression ( ( ( () ( ( ruleAddOps ) ) ( ( ruleXMultExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleAddOps ) ) ( (lv_rightOperand_3_0= ruleXMultExpression ) ) ) )* )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2634:5: this_XMultExpression_0= ruleXMultExpression ( ( ( () ( ( ruleAddOps ) ) ( ( ruleXMultExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleAddOps ) ) ( (lv_rightOperand_3_0= ruleXMultExpression ) ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXAddExpressionAccess().getXMultExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXMultExpression_in_ruleXAddExpression5482);
            this_XMultExpression_0=ruleXMultExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XMultExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2642:1: ( ( ( () ( ( ruleAddOps ) ) ( ( ruleXMultExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleAddOps ) ) ( (lv_rightOperand_3_0= ruleXMultExpression ) ) ) )*
            loop49:
            do {
                int alt49=2;
                switch ( input.LA(1) ) {
                case 56:
                    {
                    int LA49_2 = input.LA(2);

                    if ( (synpred8_InternalUnicornDSL()) ) {
                        alt49=1;
                    }


                    }
                    break;
                case 55:
                    {
                    int LA49_3 = input.LA(2);

                    if ( (synpred8_InternalUnicornDSL()) ) {
                        alt49=1;
                    }


                    }
                    break;
                case 57:
                    {
                    int LA49_4 = input.LA(2);

                    if ( (synpred8_InternalUnicornDSL()) ) {
                        alt49=1;
                    }


                    }
                    break;
                case 58:
                    {
                    int LA49_5 = input.LA(2);

                    if ( (synpred8_InternalUnicornDSL()) ) {
                        alt49=1;
                    }


                    }
                    break;

                }

                switch (alt49) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2642:2: ( ( () ( ( ruleAddOps ) ) ( ( ruleXMultExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleAddOps ) ) ( (lv_rightOperand_3_0= ruleXMultExpression ) ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2651:6: ( () ( (lv_operator_2_0= ruleAddOps ) ) ( (lv_rightOperand_3_0= ruleXMultExpression ) ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2651:7: () ( (lv_operator_2_0= ruleAddOps ) ) ( (lv_rightOperand_3_0= ruleXMultExpression ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2651:7: ()
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2652:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXAddExpressionAccess().getXAddExpressionLeftOperandAction_1_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2657:2: ( (lv_operator_2_0= ruleAddOps ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2658:1: (lv_operator_2_0= ruleAddOps )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2658:1: (lv_operator_2_0= ruleAddOps )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2659:3: lv_operator_2_0= ruleAddOps
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXAddExpressionAccess().getOperatorAddOpsParserRuleCall_1_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleAddOps_in_ruleXAddExpression5539);
            	    lv_operator_2_0=ruleAddOps();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXAddExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"operator",
            	              		lv_operator_2_0, 
            	              		"AddOps");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2675:2: ( (lv_rightOperand_3_0= ruleXMultExpression ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2676:1: (lv_rightOperand_3_0= ruleXMultExpression )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2676:1: (lv_rightOperand_3_0= ruleXMultExpression )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2677:3: lv_rightOperand_3_0= ruleXMultExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXAddExpressionAccess().getRightOperandXMultExpressionParserRuleCall_1_0_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXMultExpression_in_ruleXAddExpression5560);
            	    lv_rightOperand_3_0=ruleXMultExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXAddExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XMultExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop49;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXAddExpression"


    // $ANTLR start "entryRuleAddOps"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2701:1: entryRuleAddOps returns [String current=null] : iv_ruleAddOps= ruleAddOps EOF ;
    public final String entryRuleAddOps() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleAddOps = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2702:2: (iv_ruleAddOps= ruleAddOps EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2703:2: iv_ruleAddOps= ruleAddOps EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAddOpsRule()); 
            }
            pushFollow(FOLLOW_ruleAddOps_in_entryRuleAddOps5600);
            iv_ruleAddOps=ruleAddOps();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAddOps.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleAddOps5611); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAddOps"


    // $ANTLR start "ruleAddOps"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2710:1: ruleAddOps returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' | kw= '|' | kw= '&' ) ;
    public final AntlrDatatypeRuleToken ruleAddOps() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2713:28: ( (kw= '+' | kw= '-' | kw= '|' | kw= '&' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2714:1: (kw= '+' | kw= '-' | kw= '|' | kw= '&' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2714:1: (kw= '+' | kw= '-' | kw= '|' | kw= '&' )
            int alt50=4;
            switch ( input.LA(1) ) {
            case 55:
                {
                alt50=1;
                }
                break;
            case 56:
                {
                alt50=2;
                }
                break;
            case 57:
                {
                alt50=3;
                }
                break;
            case 58:
                {
                alt50=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 50, 0, input);

                throw nvae;
            }

            switch (alt50) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2715:2: kw= '+'
                    {
                    kw=(Token)match(input,55,FOLLOW_55_in_ruleAddOps5649); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAddOpsAccess().getPlusSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2722:2: kw= '-'
                    {
                    kw=(Token)match(input,56,FOLLOW_56_in_ruleAddOps5668); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAddOpsAccess().getHyphenMinusKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2729:2: kw= '|'
                    {
                    kw=(Token)match(input,57,FOLLOW_57_in_ruleAddOps5687); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAddOpsAccess().getVerticalLineKeyword_2()); 
                          
                    }

                    }
                    break;
                case 4 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2736:2: kw= '&'
                    {
                    kw=(Token)match(input,58,FOLLOW_58_in_ruleAddOps5706); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAddOpsAccess().getAmpersandKeyword_3()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAddOps"


    // $ANTLR start "entryRuleXMultExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2749:1: entryRuleXMultExpression returns [EObject current=null] : iv_ruleXMultExpression= ruleXMultExpression EOF ;
    public final EObject entryRuleXMultExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXMultExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2750:2: (iv_ruleXMultExpression= ruleXMultExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2751:2: iv_ruleXMultExpression= ruleXMultExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXMultExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXMultExpression_in_entryRuleXMultExpression5746);
            iv_ruleXMultExpression=ruleXMultExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXMultExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXMultExpression5756); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXMultExpression"


    // $ANTLR start "ruleXMultExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2758:1: ruleXMultExpression returns [EObject current=null] : (this_XCastExpression_0= ruleXCastExpression ( ( ( () ( ( ruleMultOps ) ) ( ( ruleXCastExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleMultOps ) ) ( (lv_rightOperand_3_0= ruleXCastExpression ) ) ) )* ) ;
    public final EObject ruleXMultExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XCastExpression_0 = null;

        AntlrDatatypeRuleToken lv_operator_2_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2761:28: ( (this_XCastExpression_0= ruleXCastExpression ( ( ( () ( ( ruleMultOps ) ) ( ( ruleXCastExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleMultOps ) ) ( (lv_rightOperand_3_0= ruleXCastExpression ) ) ) )* ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2762:1: (this_XCastExpression_0= ruleXCastExpression ( ( ( () ( ( ruleMultOps ) ) ( ( ruleXCastExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleMultOps ) ) ( (lv_rightOperand_3_0= ruleXCastExpression ) ) ) )* )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2762:1: (this_XCastExpression_0= ruleXCastExpression ( ( ( () ( ( ruleMultOps ) ) ( ( ruleXCastExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleMultOps ) ) ( (lv_rightOperand_3_0= ruleXCastExpression ) ) ) )* )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2763:5: this_XCastExpression_0= ruleXCastExpression ( ( ( () ( ( ruleMultOps ) ) ( ( ruleXCastExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleMultOps ) ) ( (lv_rightOperand_3_0= ruleXCastExpression ) ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXMultExpressionAccess().getXCastExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXCastExpression_in_ruleXMultExpression5803);
            this_XCastExpression_0=ruleXCastExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XCastExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2771:1: ( ( ( () ( ( ruleMultOps ) ) ( ( ruleXCastExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleMultOps ) ) ( (lv_rightOperand_3_0= ruleXCastExpression ) ) ) )*
            loop51:
            do {
                int alt51=2;
                switch ( input.LA(1) ) {
                case 59:
                    {
                    int LA51_2 = input.LA(2);

                    if ( (synpred9_InternalUnicornDSL()) ) {
                        alt51=1;
                    }


                    }
                    break;
                case 60:
                    {
                    int LA51_3 = input.LA(2);

                    if ( (synpred9_InternalUnicornDSL()) ) {
                        alt51=1;
                    }


                    }
                    break;
                case 61:
                    {
                    int LA51_4 = input.LA(2);

                    if ( (synpred9_InternalUnicornDSL()) ) {
                        alt51=1;
                    }


                    }
                    break;
                case 62:
                    {
                    int LA51_5 = input.LA(2);

                    if ( (synpred9_InternalUnicornDSL()) ) {
                        alt51=1;
                    }


                    }
                    break;
                case 63:
                    {
                    int LA51_6 = input.LA(2);

                    if ( (synpred9_InternalUnicornDSL()) ) {
                        alt51=1;
                    }


                    }
                    break;
                case 64:
                    {
                    int LA51_7 = input.LA(2);

                    if ( (synpred9_InternalUnicornDSL()) ) {
                        alt51=1;
                    }


                    }
                    break;

                }

                switch (alt51) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2771:2: ( ( () ( ( ruleMultOps ) ) ( ( ruleXCastExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleMultOps ) ) ( (lv_rightOperand_3_0= ruleXCastExpression ) ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2780:6: ( () ( (lv_operator_2_0= ruleMultOps ) ) ( (lv_rightOperand_3_0= ruleXCastExpression ) ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2780:7: () ( (lv_operator_2_0= ruleMultOps ) ) ( (lv_rightOperand_3_0= ruleXCastExpression ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2780:7: ()
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2781:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXMultExpressionAccess().getXMultExpressionLeftOperandAction_1_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2786:2: ( (lv_operator_2_0= ruleMultOps ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2787:1: (lv_operator_2_0= ruleMultOps )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2787:1: (lv_operator_2_0= ruleMultOps )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2788:3: lv_operator_2_0= ruleMultOps
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXMultExpressionAccess().getOperatorMultOpsParserRuleCall_1_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleMultOps_in_ruleXMultExpression5860);
            	    lv_operator_2_0=ruleMultOps();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXMultExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"operator",
            	              		lv_operator_2_0, 
            	              		"MultOps");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2804:2: ( (lv_rightOperand_3_0= ruleXCastExpression ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2805:1: (lv_rightOperand_3_0= ruleXCastExpression )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2805:1: (lv_rightOperand_3_0= ruleXCastExpression )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2806:3: lv_rightOperand_3_0= ruleXCastExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXMultExpressionAccess().getRightOperandXCastExpressionParserRuleCall_1_0_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXCastExpression_in_ruleXMultExpression5881);
            	    lv_rightOperand_3_0=ruleXCastExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXMultExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XCastExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop51;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXMultExpression"


    // $ANTLR start "entryRuleMultOps"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2830:1: entryRuleMultOps returns [String current=null] : iv_ruleMultOps= ruleMultOps EOF ;
    public final String entryRuleMultOps() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleMultOps = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2831:2: (iv_ruleMultOps= ruleMultOps EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2832:2: iv_ruleMultOps= ruleMultOps EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getMultOpsRule()); 
            }
            pushFollow(FOLLOW_ruleMultOps_in_entryRuleMultOps5921);
            iv_ruleMultOps=ruleMultOps();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleMultOps.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleMultOps5932); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMultOps"


    // $ANTLR start "ruleMultOps"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2839:1: ruleMultOps returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '*' | kw= '^' | kw= '/' | kw= '%' | kw= '<<' | kw= '>>' ) ;
    public final AntlrDatatypeRuleToken ruleMultOps() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2842:28: ( (kw= '*' | kw= '^' | kw= '/' | kw= '%' | kw= '<<' | kw= '>>' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2843:1: (kw= '*' | kw= '^' | kw= '/' | kw= '%' | kw= '<<' | kw= '>>' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2843:1: (kw= '*' | kw= '^' | kw= '/' | kw= '%' | kw= '<<' | kw= '>>' )
            int alt52=6;
            switch ( input.LA(1) ) {
            case 59:
                {
                alt52=1;
                }
                break;
            case 60:
                {
                alt52=2;
                }
                break;
            case 61:
                {
                alt52=3;
                }
                break;
            case 62:
                {
                alt52=4;
                }
                break;
            case 63:
                {
                alt52=5;
                }
                break;
            case 64:
                {
                alt52=6;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 52, 0, input);

                throw nvae;
            }

            switch (alt52) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2844:2: kw= '*'
                    {
                    kw=(Token)match(input,59,FOLLOW_59_in_ruleMultOps5970); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getMultOpsAccess().getAsteriskKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2851:2: kw= '^'
                    {
                    kw=(Token)match(input,60,FOLLOW_60_in_ruleMultOps5989); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getMultOpsAccess().getCircumflexAccentKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2858:2: kw= '/'
                    {
                    kw=(Token)match(input,61,FOLLOW_61_in_ruleMultOps6008); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getMultOpsAccess().getSolidusKeyword_2()); 
                          
                    }

                    }
                    break;
                case 4 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2865:2: kw= '%'
                    {
                    kw=(Token)match(input,62,FOLLOW_62_in_ruleMultOps6027); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getMultOpsAccess().getPercentSignKeyword_3()); 
                          
                    }

                    }
                    break;
                case 5 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2872:2: kw= '<<'
                    {
                    kw=(Token)match(input,63,FOLLOW_63_in_ruleMultOps6046); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getMultOpsAccess().getLessThanSignLessThanSignKeyword_4()); 
                          
                    }

                    }
                    break;
                case 6 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2879:2: kw= '>>'
                    {
                    kw=(Token)match(input,64,FOLLOW_64_in_ruleMultOps6065); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getMultOpsAccess().getGreaterThanSignGreaterThanSignKeyword_5()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMultOps"


    // $ANTLR start "entryRuleXCastExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2892:1: entryRuleXCastExpression returns [EObject current=null] : iv_ruleXCastExpression= ruleXCastExpression EOF ;
    public final EObject entryRuleXCastExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXCastExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2893:2: (iv_ruleXCastExpression= ruleXCastExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2894:2: iv_ruleXCastExpression= ruleXCastExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXCastExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXCastExpression_in_entryRuleXCastExpression6105);
            iv_ruleXCastExpression=ruleXCastExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXCastExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXCastExpression6115); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXCastExpression"


    // $ANTLR start "ruleXCastExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2901:1: ruleXCastExpression returns [EObject current=null] : (this_XUnaryTerm_0= ruleXUnaryTerm ( ( ( () 'as' ( ( ruleQualifiedName ) ) ) )=> ( () otherlv_2= 'as' ( ( ruleQualifiedName ) ) ) )? ) ;
    public final EObject ruleXCastExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_XUnaryTerm_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2904:28: ( (this_XUnaryTerm_0= ruleXUnaryTerm ( ( ( () 'as' ( ( ruleQualifiedName ) ) ) )=> ( () otherlv_2= 'as' ( ( ruleQualifiedName ) ) ) )? ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2905:1: (this_XUnaryTerm_0= ruleXUnaryTerm ( ( ( () 'as' ( ( ruleQualifiedName ) ) ) )=> ( () otherlv_2= 'as' ( ( ruleQualifiedName ) ) ) )? )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2905:1: (this_XUnaryTerm_0= ruleXUnaryTerm ( ( ( () 'as' ( ( ruleQualifiedName ) ) ) )=> ( () otherlv_2= 'as' ( ( ruleQualifiedName ) ) ) )? )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2906:5: this_XUnaryTerm_0= ruleXUnaryTerm ( ( ( () 'as' ( ( ruleQualifiedName ) ) ) )=> ( () otherlv_2= 'as' ( ( ruleQualifiedName ) ) ) )?
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXCastExpressionAccess().getXUnaryTermParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXUnaryTerm_in_ruleXCastExpression6162);
            this_XUnaryTerm_0=ruleXUnaryTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XUnaryTerm_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2914:1: ( ( ( () 'as' ( ( ruleQualifiedName ) ) ) )=> ( () otherlv_2= 'as' ( ( ruleQualifiedName ) ) ) )?
            int alt53=2;
            int LA53_0 = input.LA(1);

            if ( (LA53_0==39) ) {
                int LA53_1 = input.LA(2);

                if ( (synpred10_InternalUnicornDSL()) ) {
                    alt53=1;
                }
            }
            switch (alt53) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2914:2: ( ( () 'as' ( ( ruleQualifiedName ) ) ) )=> ( () otherlv_2= 'as' ( ( ruleQualifiedName ) ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2920:6: ( () otherlv_2= 'as' ( ( ruleQualifiedName ) ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2920:7: () otherlv_2= 'as' ( ( ruleQualifiedName ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2920:7: ()
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2921:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElementAndSet(
                                  grammarAccess.getXCastExpressionAccess().getXCastExpressionExpressionAction_1_0_0(),
                                  current);
                          
                    }

                    }

                    otherlv_2=(Token)match(input,39,FOLLOW_39_in_ruleXCastExpression6207); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getXCastExpressionAccess().getAsKeyword_1_0_1());
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2930:1: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2931:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2931:1: ( ruleQualifiedName )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2932:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXCastExpressionRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXCastExpressionAccess().getTypeXJavaTypeImportCrossReference_1_0_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleXCastExpression6230);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXCastExpression"


    // $ANTLR start "entryRuleXUnaryTerm"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2953:1: entryRuleXUnaryTerm returns [EObject current=null] : iv_ruleXUnaryTerm= ruleXUnaryTerm EOF ;
    public final EObject entryRuleXUnaryTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXUnaryTerm = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2954:2: (iv_ruleXUnaryTerm= ruleXUnaryTerm EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2955:2: iv_ruleXUnaryTerm= ruleXUnaryTerm EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXUnaryTermRule()); 
            }
            pushFollow(FOLLOW_ruleXUnaryTerm_in_entryRuleXUnaryTerm6269);
            iv_ruleXUnaryTerm=ruleXUnaryTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXUnaryTerm; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXUnaryTerm6279); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXUnaryTerm"


    // $ANTLR start "ruleXUnaryTerm"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2962:1: ruleXUnaryTerm returns [EObject current=null] : ( ( () ( ( (lv_operator_1_1= '!' | lv_operator_1_2= '-' ) ) ) ( (lv_term_2_0= ruleXMemberTerm ) ) ) | (this_XMemberTerm_3= ruleXMemberTerm ( ( ( () ( ( ( '++' | '--' ) ) ) ) )=> ( () ( ( (lv_operator_5_1= '++' | lv_operator_5_2= '--' ) ) ) ) )? ) ) ;
    public final EObject ruleXUnaryTerm() throws RecognitionException {
        EObject current = null;

        Token lv_operator_1_1=null;
        Token lv_operator_1_2=null;
        Token lv_operator_5_1=null;
        Token lv_operator_5_2=null;
        EObject lv_term_2_0 = null;

        EObject this_XMemberTerm_3 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2965:28: ( ( ( () ( ( (lv_operator_1_1= '!' | lv_operator_1_2= '-' ) ) ) ( (lv_term_2_0= ruleXMemberTerm ) ) ) | (this_XMemberTerm_3= ruleXMemberTerm ( ( ( () ( ( ( '++' | '--' ) ) ) ) )=> ( () ( ( (lv_operator_5_1= '++' | lv_operator_5_2= '--' ) ) ) ) )? ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2966:1: ( ( () ( ( (lv_operator_1_1= '!' | lv_operator_1_2= '-' ) ) ) ( (lv_term_2_0= ruleXMemberTerm ) ) ) | (this_XMemberTerm_3= ruleXMemberTerm ( ( ( () ( ( ( '++' | '--' ) ) ) ) )=> ( () ( ( (lv_operator_5_1= '++' | lv_operator_5_2= '--' ) ) ) ) )? ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2966:1: ( ( () ( ( (lv_operator_1_1= '!' | lv_operator_1_2= '-' ) ) ) ( (lv_term_2_0= ruleXMemberTerm ) ) ) | (this_XMemberTerm_3= ruleXMemberTerm ( ( ( () ( ( ( '++' | '--' ) ) ) ) )=> ( () ( ( (lv_operator_5_1= '++' | lv_operator_5_2= '--' ) ) ) ) )? ) )
            int alt57=2;
            int LA57_0 = input.LA(1);

            if ( (LA57_0==56||LA57_0==65) ) {
                alt57=1;
            }
            else if ( ((LA57_0>=RULE_ID && LA57_0<=RULE_VERBATIM_STRING)||LA57_0==17||LA57_0==34||LA57_0==42||(LA57_0>=70 && LA57_0<=73)||(LA57_0>=81 && LA57_0<=88)||(LA57_0>=90 && LA57_0<=91)) ) {
                alt57=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 57, 0, input);

                throw nvae;
            }
            switch (alt57) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2966:2: ( () ( ( (lv_operator_1_1= '!' | lv_operator_1_2= '-' ) ) ) ( (lv_term_2_0= ruleXMemberTerm ) ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2966:2: ( () ( ( (lv_operator_1_1= '!' | lv_operator_1_2= '-' ) ) ) ( (lv_term_2_0= ruleXMemberTerm ) ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2966:3: () ( ( (lv_operator_1_1= '!' | lv_operator_1_2= '-' ) ) ) ( (lv_term_2_0= ruleXMemberTerm ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2966:3: ()
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2967:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getXUnaryTermAccess().getXUnaryTermAction_0_0(),
                                  current);
                          
                    }

                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2972:2: ( ( (lv_operator_1_1= '!' | lv_operator_1_2= '-' ) ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2973:1: ( (lv_operator_1_1= '!' | lv_operator_1_2= '-' ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2973:1: ( (lv_operator_1_1= '!' | lv_operator_1_2= '-' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2974:1: (lv_operator_1_1= '!' | lv_operator_1_2= '-' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2974:1: (lv_operator_1_1= '!' | lv_operator_1_2= '-' )
                    int alt54=2;
                    int LA54_0 = input.LA(1);

                    if ( (LA54_0==65) ) {
                        alt54=1;
                    }
                    else if ( (LA54_0==56) ) {
                        alt54=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 54, 0, input);

                        throw nvae;
                    }
                    switch (alt54) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2975:3: lv_operator_1_1= '!'
                            {
                            lv_operator_1_1=(Token)match(input,65,FOLLOW_65_in_ruleXUnaryTerm6334); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_operator_1_1, grammarAccess.getXUnaryTermAccess().getOperatorExclamationMarkKeyword_0_1_0_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getXUnaryTermRule());
                              	        }
                                     		setWithLastConsumed(current, "operator", lv_operator_1_1, null);
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2987:8: lv_operator_1_2= '-'
                            {
                            lv_operator_1_2=(Token)match(input,56,FOLLOW_56_in_ruleXUnaryTerm6363); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_operator_1_2, grammarAccess.getXUnaryTermAccess().getOperatorHyphenMinusKeyword_0_1_0_1());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getXUnaryTermRule());
                              	        }
                                     		setWithLastConsumed(current, "operator", lv_operator_1_2, null);
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3002:2: ( (lv_term_2_0= ruleXMemberTerm ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3003:1: (lv_term_2_0= ruleXMemberTerm )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3003:1: (lv_term_2_0= ruleXMemberTerm )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3004:3: lv_term_2_0= ruleXMemberTerm
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXUnaryTermAccess().getTermXMemberTermParserRuleCall_0_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXMemberTerm_in_ruleXUnaryTerm6400);
                    lv_term_2_0=ruleXMemberTerm();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXUnaryTermRule());
                      	        }
                             		set(
                             			current, 
                             			"term",
                              		lv_term_2_0, 
                              		"XMemberTerm");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3021:6: (this_XMemberTerm_3= ruleXMemberTerm ( ( ( () ( ( ( '++' | '--' ) ) ) ) )=> ( () ( ( (lv_operator_5_1= '++' | lv_operator_5_2= '--' ) ) ) ) )? )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3021:6: (this_XMemberTerm_3= ruleXMemberTerm ( ( ( () ( ( ( '++' | '--' ) ) ) ) )=> ( () ( ( (lv_operator_5_1= '++' | lv_operator_5_2= '--' ) ) ) ) )? )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3022:5: this_XMemberTerm_3= ruleXMemberTerm ( ( ( () ( ( ( '++' | '--' ) ) ) ) )=> ( () ( ( (lv_operator_5_1= '++' | lv_operator_5_2= '--' ) ) ) ) )?
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXUnaryTermAccess().getXMemberTermParserRuleCall_1_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXMemberTerm_in_ruleXUnaryTerm6430);
                    this_XMemberTerm_3=ruleXMemberTerm();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XMemberTerm_3; 
                              afterParserOrEnumRuleCall();
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3030:1: ( ( ( () ( ( ( '++' | '--' ) ) ) ) )=> ( () ( ( (lv_operator_5_1= '++' | lv_operator_5_2= '--' ) ) ) ) )?
                    int alt56=2;
                    int LA56_0 = input.LA(1);

                    if ( (LA56_0==66) ) {
                        int LA56_1 = input.LA(2);

                        if ( (synpred11_InternalUnicornDSL()) ) {
                            alt56=1;
                        }
                    }
                    else if ( (LA56_0==67) ) {
                        int LA56_2 = input.LA(2);

                        if ( (synpred11_InternalUnicornDSL()) ) {
                            alt56=1;
                        }
                    }
                    switch (alt56) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3030:2: ( ( () ( ( ( '++' | '--' ) ) ) ) )=> ( () ( ( (lv_operator_5_1= '++' | lv_operator_5_2= '--' ) ) ) )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3043:6: ( () ( ( (lv_operator_5_1= '++' | lv_operator_5_2= '--' ) ) ) )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3043:7: () ( ( (lv_operator_5_1= '++' | lv_operator_5_2= '--' ) ) )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3043:7: ()
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3044:5: 
                            {
                            if ( state.backtracking==0 ) {

                                      current = forceCreateModelElementAndSet(
                                          grammarAccess.getXUnaryTermAccess().getXUnaryTermTermAction_1_1_0_0(),
                                          current);
                                  
                            }

                            }

                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3049:2: ( ( (lv_operator_5_1= '++' | lv_operator_5_2= '--' ) ) )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3050:1: ( (lv_operator_5_1= '++' | lv_operator_5_2= '--' ) )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3050:1: ( (lv_operator_5_1= '++' | lv_operator_5_2= '--' ) )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3051:1: (lv_operator_5_1= '++' | lv_operator_5_2= '--' )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3051:1: (lv_operator_5_1= '++' | lv_operator_5_2= '--' )
                            int alt55=2;
                            int LA55_0 = input.LA(1);

                            if ( (LA55_0==66) ) {
                                alt55=1;
                            }
                            else if ( (LA55_0==67) ) {
                                alt55=2;
                            }
                            else {
                                if (state.backtracking>0) {state.failed=true; return current;}
                                NoViableAltException nvae =
                                    new NoViableAltException("", 55, 0, input);

                                throw nvae;
                            }
                            switch (alt55) {
                                case 1 :
                                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3052:3: lv_operator_5_1= '++'
                                    {
                                    lv_operator_5_1=(Token)match(input,66,FOLLOW_66_in_ruleXUnaryTerm6501); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                              newLeafNode(lv_operator_5_1, grammarAccess.getXUnaryTermAccess().getOperatorPlusSignPlusSignKeyword_1_1_0_1_0_0());
                                          
                                    }
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElement(grammarAccess.getXUnaryTermRule());
                                      	        }
                                             		setWithLastConsumed(current, "operator", lv_operator_5_1, null);
                                      	    
                                    }

                                    }
                                    break;
                                case 2 :
                                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3064:8: lv_operator_5_2= '--'
                                    {
                                    lv_operator_5_2=(Token)match(input,67,FOLLOW_67_in_ruleXUnaryTerm6530); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                              newLeafNode(lv_operator_5_2, grammarAccess.getXUnaryTermAccess().getOperatorHyphenMinusHyphenMinusKeyword_1_1_0_1_0_1());
                                          
                                    }
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElement(grammarAccess.getXUnaryTermRule());
                                      	        }
                                             		setWithLastConsumed(current, "operator", lv_operator_5_2, null);
                                      	    
                                    }

                                    }
                                    break;

                            }


                            }


                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXUnaryTerm"


    // $ANTLR start "entryRuleXMemberTerm"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3087:1: entryRuleXMemberTerm returns [EObject current=null] : iv_ruleXMemberTerm= ruleXMemberTerm EOF ;
    public final EObject entryRuleXMemberTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXMemberTerm = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3088:2: (iv_ruleXMemberTerm= ruleXMemberTerm EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3089:2: iv_ruleXMemberTerm= ruleXMemberTerm EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXMemberTermRule()); 
            }
            pushFollow(FOLLOW_ruleXMemberTerm_in_entryRuleXMemberTerm6586);
            iv_ruleXMemberTerm=ruleXMemberTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXMemberTerm; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXMemberTerm6596); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXMemberTerm"


    // $ANTLR start "ruleXMemberTerm"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3096:1: ruleXMemberTerm returns [EObject current=null] : ( (this_XTerm_0= ruleXTerm | this_XIdentifiedElementFeatureCall_1= ruleXIdentifiedElementFeatureCall ) ( ( ( () ( '.' | ( ( '?.' ) ) ) ( ( ruleXFeatureCall ) ) ) )=> ( () (otherlv_3= '.' | ( (lv_nullSafe_4_0= '?.' ) ) ) ( (lv_member_5_0= ruleXFeatureCall ) ) ) )* ) ;
    public final EObject ruleXMemberTerm() throws RecognitionException {
        EObject current = null;

        Token otherlv_3=null;
        Token lv_nullSafe_4_0=null;
        EObject this_XTerm_0 = null;

        EObject this_XIdentifiedElementFeatureCall_1 = null;

        EObject lv_member_5_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3099:28: ( ( (this_XTerm_0= ruleXTerm | this_XIdentifiedElementFeatureCall_1= ruleXIdentifiedElementFeatureCall ) ( ( ( () ( '.' | ( ( '?.' ) ) ) ( ( ruleXFeatureCall ) ) ) )=> ( () (otherlv_3= '.' | ( (lv_nullSafe_4_0= '?.' ) ) ) ( (lv_member_5_0= ruleXFeatureCall ) ) ) )* ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3100:1: ( (this_XTerm_0= ruleXTerm | this_XIdentifiedElementFeatureCall_1= ruleXIdentifiedElementFeatureCall ) ( ( ( () ( '.' | ( ( '?.' ) ) ) ( ( ruleXFeatureCall ) ) ) )=> ( () (otherlv_3= '.' | ( (lv_nullSafe_4_0= '?.' ) ) ) ( (lv_member_5_0= ruleXFeatureCall ) ) ) )* )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3100:1: ( (this_XTerm_0= ruleXTerm | this_XIdentifiedElementFeatureCall_1= ruleXIdentifiedElementFeatureCall ) ( ( ( () ( '.' | ( ( '?.' ) ) ) ( ( ruleXFeatureCall ) ) ) )=> ( () (otherlv_3= '.' | ( (lv_nullSafe_4_0= '?.' ) ) ) ( (lv_member_5_0= ruleXFeatureCall ) ) ) )* )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3100:2: (this_XTerm_0= ruleXTerm | this_XIdentifiedElementFeatureCall_1= ruleXIdentifiedElementFeatureCall ) ( ( ( () ( '.' | ( ( '?.' ) ) ) ( ( ruleXFeatureCall ) ) ) )=> ( () (otherlv_3= '.' | ( (lv_nullSafe_4_0= '?.' ) ) ) ( (lv_member_5_0= ruleXFeatureCall ) ) ) )*
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3100:2: (this_XTerm_0= ruleXTerm | this_XIdentifiedElementFeatureCall_1= ruleXIdentifiedElementFeatureCall )
            int alt58=2;
            int LA58_0 = input.LA(1);

            if ( ((LA58_0>=RULE_STRING && LA58_0<=RULE_VERBATIM_STRING)||LA58_0==17||LA58_0==34||LA58_0==42||(LA58_0>=70 && LA58_0<=73)||(LA58_0>=83 && LA58_0<=88)||(LA58_0>=90 && LA58_0<=91)) ) {
                alt58=1;
            }
            else if ( (LA58_0==RULE_ID||(LA58_0>=81 && LA58_0<=82)) ) {
                alt58=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 58, 0, input);

                throw nvae;
            }
            switch (alt58) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3101:5: this_XTerm_0= ruleXTerm
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXMemberTermAccess().getXTermParserRuleCall_0_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXTerm_in_ruleXMemberTerm6644);
                    this_XTerm_0=ruleXTerm();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XTerm_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3111:5: this_XIdentifiedElementFeatureCall_1= ruleXIdentifiedElementFeatureCall
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXMemberTermAccess().getXIdentifiedElementFeatureCallParserRuleCall_0_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXIdentifiedElementFeatureCall_in_ruleXMemberTerm6671);
                    this_XIdentifiedElementFeatureCall_1=ruleXIdentifiedElementFeatureCall();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XIdentifiedElementFeatureCall_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3119:2: ( ( ( () ( '.' | ( ( '?.' ) ) ) ( ( ruleXFeatureCall ) ) ) )=> ( () (otherlv_3= '.' | ( (lv_nullSafe_4_0= '?.' ) ) ) ( (lv_member_5_0= ruleXFeatureCall ) ) ) )*
            loop60:
            do {
                int alt60=2;
                int LA60_0 = input.LA(1);

                if ( (LA60_0==68) ) {
                    int LA60_2 = input.LA(2);

                    if ( (synpred12_InternalUnicornDSL()) ) {
                        alt60=1;
                    }


                }
                else if ( (LA60_0==69) ) {
                    int LA60_3 = input.LA(2);

                    if ( (synpred12_InternalUnicornDSL()) ) {
                        alt60=1;
                    }


                }


                switch (alt60) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3119:3: ( ( () ( '.' | ( ( '?.' ) ) ) ( ( ruleXFeatureCall ) ) ) )=> ( () (otherlv_3= '.' | ( (lv_nullSafe_4_0= '?.' ) ) ) ( (lv_member_5_0= ruleXFeatureCall ) ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3132:6: ( () (otherlv_3= '.' | ( (lv_nullSafe_4_0= '?.' ) ) ) ( (lv_member_5_0= ruleXFeatureCall ) ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3132:7: () (otherlv_3= '.' | ( (lv_nullSafe_4_0= '?.' ) ) ) ( (lv_member_5_0= ruleXFeatureCall ) )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3132:7: ()
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3133:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXMemberTermAccess().getXMemberTermOwnerAction_1_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3138:2: (otherlv_3= '.' | ( (lv_nullSafe_4_0= '?.' ) ) )
            	    int alt59=2;
            	    int LA59_0 = input.LA(1);

            	    if ( (LA59_0==68) ) {
            	        alt59=1;
            	    }
            	    else if ( (LA59_0==69) ) {
            	        alt59=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 59, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt59) {
            	        case 1 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3138:4: otherlv_3= '.'
            	            {
            	            otherlv_3=(Token)match(input,68,FOLLOW_68_in_ruleXMemberTerm6738); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_3, grammarAccess.getXMemberTermAccess().getFullStopKeyword_1_0_1_0());
            	                  
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3143:6: ( (lv_nullSafe_4_0= '?.' ) )
            	            {
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3143:6: ( (lv_nullSafe_4_0= '?.' ) )
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3144:1: (lv_nullSafe_4_0= '?.' )
            	            {
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3144:1: (lv_nullSafe_4_0= '?.' )
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3145:3: lv_nullSafe_4_0= '?.'
            	            {
            	            lv_nullSafe_4_0=(Token)match(input,69,FOLLOW_69_in_ruleXMemberTerm6762); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_nullSafe_4_0, grammarAccess.getXMemberTermAccess().getNullSafeQuestionMarkFullStopKeyword_1_0_1_1_0());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getXMemberTermRule());
            	              	        }
            	                     		setWithLastConsumed(current, "nullSafe", true, "?.");
            	              	    
            	            }

            	            }


            	            }


            	            }
            	            break;

            	    }

            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3158:3: ( (lv_member_5_0= ruleXFeatureCall ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3159:1: (lv_member_5_0= ruleXFeatureCall )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3159:1: (lv_member_5_0= ruleXFeatureCall )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3160:3: lv_member_5_0= ruleXFeatureCall
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXMemberTermAccess().getMemberXFeatureCallParserRuleCall_1_0_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXFeatureCall_in_ruleXMemberTerm6797);
            	    lv_member_5_0=ruleXFeatureCall();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXMemberTermRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"member",
            	              		lv_member_5_0, 
            	              		"XFeatureCall");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop60;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXMemberTerm"


    // $ANTLR start "entryRuleXTerm"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3184:1: entryRuleXTerm returns [EObject current=null] : iv_ruleXTerm= ruleXTerm EOF ;
    public final EObject entryRuleXTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXTerm = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3185:2: (iv_ruleXTerm= ruleXTerm EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3186:2: iv_ruleXTerm= ruleXTerm EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXTermRule()); 
            }
            pushFollow(FOLLOW_ruleXTerm_in_entryRuleXTerm6836);
            iv_ruleXTerm=ruleXTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXTerm; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXTerm6846); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXTerm"


    // $ANTLR start "ruleXTerm"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3193:1: ruleXTerm returns [EObject current=null] : (this_XLiteral_0= ruleXLiteral | this_XParenthesizedExpression_1= ruleXParenthesizedExpression | this_XArray_2= ruleXArray | this_XDataFrameExpression_3= ruleXDataFrameExpression | this_XConstructionExpression_4= ruleXConstructionExpression | this_XInitObjectExpression_5= ruleXInitObjectExpression | this_XIfExpression_6= ruleXIfExpression | this_XWhileExpression_7= ruleXWhileExpression | this_XForExpression_8= ruleXForExpression | this_XFunctionDeclaration_9= ruleXFunctionDeclaration ) ;
    public final EObject ruleXTerm() throws RecognitionException {
        EObject current = null;

        EObject this_XLiteral_0 = null;

        EObject this_XParenthesizedExpression_1 = null;

        EObject this_XArray_2 = null;

        EObject this_XDataFrameExpression_3 = null;

        EObject this_XConstructionExpression_4 = null;

        EObject this_XInitObjectExpression_5 = null;

        EObject this_XIfExpression_6 = null;

        EObject this_XWhileExpression_7 = null;

        EObject this_XForExpression_8 = null;

        EObject this_XFunctionDeclaration_9 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3196:28: ( (this_XLiteral_0= ruleXLiteral | this_XParenthesizedExpression_1= ruleXParenthesizedExpression | this_XArray_2= ruleXArray | this_XDataFrameExpression_3= ruleXDataFrameExpression | this_XConstructionExpression_4= ruleXConstructionExpression | this_XInitObjectExpression_5= ruleXInitObjectExpression | this_XIfExpression_6= ruleXIfExpression | this_XWhileExpression_7= ruleXWhileExpression | this_XForExpression_8= ruleXForExpression | this_XFunctionDeclaration_9= ruleXFunctionDeclaration ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3197:1: (this_XLiteral_0= ruleXLiteral | this_XParenthesizedExpression_1= ruleXParenthesizedExpression | this_XArray_2= ruleXArray | this_XDataFrameExpression_3= ruleXDataFrameExpression | this_XConstructionExpression_4= ruleXConstructionExpression | this_XInitObjectExpression_5= ruleXInitObjectExpression | this_XIfExpression_6= ruleXIfExpression | this_XWhileExpression_7= ruleXWhileExpression | this_XForExpression_8= ruleXForExpression | this_XFunctionDeclaration_9= ruleXFunctionDeclaration )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3197:1: (this_XLiteral_0= ruleXLiteral | this_XParenthesizedExpression_1= ruleXParenthesizedExpression | this_XArray_2= ruleXArray | this_XDataFrameExpression_3= ruleXDataFrameExpression | this_XConstructionExpression_4= ruleXConstructionExpression | this_XInitObjectExpression_5= ruleXInitObjectExpression | this_XIfExpression_6= ruleXIfExpression | this_XWhileExpression_7= ruleXWhileExpression | this_XForExpression_8= ruleXForExpression | this_XFunctionDeclaration_9= ruleXFunctionDeclaration )
            int alt61=10;
            alt61 = dfa61.predict(input);
            switch (alt61) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3198:5: this_XLiteral_0= ruleXLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXTermAccess().getXLiteralParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXLiteral_in_ruleXTerm6893);
                    this_XLiteral_0=ruleXLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XLiteral_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3208:5: this_XParenthesizedExpression_1= ruleXParenthesizedExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXTermAccess().getXParenthesizedExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXParenthesizedExpression_in_ruleXTerm6920);
                    this_XParenthesizedExpression_1=ruleXParenthesizedExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XParenthesizedExpression_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3218:5: this_XArray_2= ruleXArray
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXTermAccess().getXArrayParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXArray_in_ruleXTerm6947);
                    this_XArray_2=ruleXArray();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XArray_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3228:5: this_XDataFrameExpression_3= ruleXDataFrameExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXTermAccess().getXDataFrameExpressionParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXDataFrameExpression_in_ruleXTerm6974);
                    this_XDataFrameExpression_3=ruleXDataFrameExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XDataFrameExpression_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3238:5: this_XConstructionExpression_4= ruleXConstructionExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXTermAccess().getXConstructionExpressionParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXConstructionExpression_in_ruleXTerm7001);
                    this_XConstructionExpression_4=ruleXConstructionExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XConstructionExpression_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 6 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3248:5: this_XInitObjectExpression_5= ruleXInitObjectExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXTermAccess().getXInitObjectExpressionParserRuleCall_5()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXInitObjectExpression_in_ruleXTerm7028);
                    this_XInitObjectExpression_5=ruleXInitObjectExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XInitObjectExpression_5; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 7 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3258:5: this_XIfExpression_6= ruleXIfExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXTermAccess().getXIfExpressionParserRuleCall_6()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXIfExpression_in_ruleXTerm7055);
                    this_XIfExpression_6=ruleXIfExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XIfExpression_6; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 8 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3268:5: this_XWhileExpression_7= ruleXWhileExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXTermAccess().getXWhileExpressionParserRuleCall_7()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXWhileExpression_in_ruleXTerm7082);
                    this_XWhileExpression_7=ruleXWhileExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XWhileExpression_7; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 9 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3278:5: this_XForExpression_8= ruleXForExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXTermAccess().getXForExpressionParserRuleCall_8()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXForExpression_in_ruleXTerm7109);
                    this_XForExpression_8=ruleXForExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XForExpression_8; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 10 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3288:5: this_XFunctionDeclaration_9= ruleXFunctionDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXTermAccess().getXFunctionDeclarationParserRuleCall_9()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXFunctionDeclaration_in_ruleXTerm7136);
                    this_XFunctionDeclaration_9=ruleXFunctionDeclaration();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XFunctionDeclaration_9; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXTerm"


    // $ANTLR start "entryRuleXArray"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3304:1: entryRuleXArray returns [EObject current=null] : iv_ruleXArray= ruleXArray EOF ;
    public final EObject entryRuleXArray() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXArray = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3305:2: (iv_ruleXArray= ruleXArray EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3306:2: iv_ruleXArray= ruleXArray EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXArrayRule()); 
            }
            pushFollow(FOLLOW_ruleXArray_in_entryRuleXArray7171);
            iv_ruleXArray=ruleXArray();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXArray; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXArray7181); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXArray"


    // $ANTLR start "ruleXArray"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3313:1: ruleXArray returns [EObject current=null] : ( ( () ( (lv_list_1_0= 'list' ) )? otherlv_2= '[' ( ( (lv_expressions_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_expressions_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) | ( () ( ( ( ( ( 'map' ) ) | 'frame' ) )=> ( ( (lv_map_8_0= 'map' ) ) | otherlv_9= 'frame' ) ) otherlv_10= '{' ( ( (lv_keys_11_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_12= '=' ) ( (lv_expressions_13_0= ruleXExpression ) ) (otherlv_14= ',' ( (lv_keys_15_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_16= '=' ) ( (lv_expressions_17_0= ruleXExpression ) ) )* )? otherlv_18= '}' ) ) ;
    public final EObject ruleXArray() throws RecognitionException {
        EObject current = null;

        Token lv_list_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token lv_map_8_0=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        Token otherlv_16=null;
        Token otherlv_18=null;
        EObject lv_expressions_3_0 = null;

        EObject lv_expressions_5_0 = null;

        EObject lv_keys_11_0 = null;

        EObject lv_expressions_13_0 = null;

        EObject lv_keys_15_0 = null;

        EObject lv_expressions_17_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3316:28: ( ( ( () ( (lv_list_1_0= 'list' ) )? otherlv_2= '[' ( ( (lv_expressions_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_expressions_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) | ( () ( ( ( ( ( 'map' ) ) | 'frame' ) )=> ( ( (lv_map_8_0= 'map' ) ) | otherlv_9= 'frame' ) ) otherlv_10= '{' ( ( (lv_keys_11_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_12= '=' ) ( (lv_expressions_13_0= ruleXExpression ) ) (otherlv_14= ',' ( (lv_keys_15_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_16= '=' ) ( (lv_expressions_17_0= ruleXExpression ) ) )* )? otherlv_18= '}' ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3317:1: ( ( () ( (lv_list_1_0= 'list' ) )? otherlv_2= '[' ( ( (lv_expressions_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_expressions_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) | ( () ( ( ( ( ( 'map' ) ) | 'frame' ) )=> ( ( (lv_map_8_0= 'map' ) ) | otherlv_9= 'frame' ) ) otherlv_10= '{' ( ( (lv_keys_11_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_12= '=' ) ( (lv_expressions_13_0= ruleXExpression ) ) (otherlv_14= ',' ( (lv_keys_15_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_16= '=' ) ( (lv_expressions_17_0= ruleXExpression ) ) )* )? otherlv_18= '}' ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3317:1: ( ( () ( (lv_list_1_0= 'list' ) )? otherlv_2= '[' ( ( (lv_expressions_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_expressions_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) | ( () ( ( ( ( ( 'map' ) ) | 'frame' ) )=> ( ( (lv_map_8_0= 'map' ) ) | otherlv_9= 'frame' ) ) otherlv_10= '{' ( ( (lv_keys_11_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_12= '=' ) ( (lv_expressions_13_0= ruleXExpression ) ) (otherlv_14= ',' ( (lv_keys_15_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_16= '=' ) ( (lv_expressions_17_0= ruleXExpression ) ) )* )? otherlv_18= '}' ) )
            int alt68=2;
            int LA68_0 = input.LA(1);

            if ( (LA68_0==34||LA68_0==70) ) {
                alt68=1;
            }
            else if ( ((LA68_0>=71 && LA68_0<=72)) ) {
                alt68=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 68, 0, input);

                throw nvae;
            }
            switch (alt68) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3317:2: ( () ( (lv_list_1_0= 'list' ) )? otherlv_2= '[' ( ( (lv_expressions_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_expressions_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3317:2: ( () ( (lv_list_1_0= 'list' ) )? otherlv_2= '[' ( ( (lv_expressions_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_expressions_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3317:3: () ( (lv_list_1_0= 'list' ) )? otherlv_2= '[' ( ( (lv_expressions_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_expressions_5_0= ruleXExpression ) ) )* )? otherlv_6= ']'
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3317:3: ()
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3318:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getXArrayAccess().getXArrayAction_0_0(),
                                  current);
                          
                    }

                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3323:2: ( (lv_list_1_0= 'list' ) )?
                    int alt62=2;
                    int LA62_0 = input.LA(1);

                    if ( (LA62_0==70) ) {
                        alt62=1;
                    }
                    switch (alt62) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3324:1: (lv_list_1_0= 'list' )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3324:1: (lv_list_1_0= 'list' )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3325:3: lv_list_1_0= 'list'
                            {
                            lv_list_1_0=(Token)match(input,70,FOLLOW_70_in_ruleXArray7234); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_list_1_0, grammarAccess.getXArrayAccess().getListListKeyword_0_1_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getXArrayRule());
                              	        }
                                     		setWithLastConsumed(current, "list", true, "list");
                              	    
                            }

                            }


                            }
                            break;

                    }

                    otherlv_2=(Token)match(input,34,FOLLOW_34_in_ruleXArray7260); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getXArrayAccess().getLeftSquareBracketKeyword_0_2());
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3342:1: ( ( (lv_expressions_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_expressions_5_0= ruleXExpression ) ) )* )?
                    int alt64=2;
                    int LA64_0 = input.LA(1);

                    if ( ((LA64_0>=RULE_ID && LA64_0<=RULE_VERBATIM_STRING)||LA64_0==17||LA64_0==34||LA64_0==42||LA64_0==56||LA64_0==65||(LA64_0>=70 && LA64_0<=73)||LA64_0==79||(LA64_0>=81 && LA64_0<=88)||(LA64_0>=90 && LA64_0<=91)) ) {
                        alt64=1;
                    }
                    switch (alt64) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3342:2: ( (lv_expressions_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_expressions_5_0= ruleXExpression ) ) )*
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3342:2: ( (lv_expressions_3_0= ruleXExpression ) )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3343:1: (lv_expressions_3_0= ruleXExpression )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3343:1: (lv_expressions_3_0= ruleXExpression )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3344:3: lv_expressions_3_0= ruleXExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXArrayAccess().getExpressionsXExpressionParserRuleCall_0_3_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXExpression_in_ruleXArray7282);
                            lv_expressions_3_0=ruleXExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXArrayRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"expressions",
                                      		lv_expressions_3_0, 
                                      		"XExpression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3360:2: (otherlv_4= ',' ( (lv_expressions_5_0= ruleXExpression ) ) )*
                            loop63:
                            do {
                                int alt63=2;
                                int LA63_0 = input.LA(1);

                                if ( (LA63_0==18) ) {
                                    alt63=1;
                                }


                                switch (alt63) {
                            	case 1 :
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3360:4: otherlv_4= ',' ( (lv_expressions_5_0= ruleXExpression ) )
                            	    {
                            	    otherlv_4=(Token)match(input,18,FOLLOW_18_in_ruleXArray7295); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_4, grammarAccess.getXArrayAccess().getCommaKeyword_0_3_1_0());
                            	          
                            	    }
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3364:1: ( (lv_expressions_5_0= ruleXExpression ) )
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3365:1: (lv_expressions_5_0= ruleXExpression )
                            	    {
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3365:1: (lv_expressions_5_0= ruleXExpression )
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3366:3: lv_expressions_5_0= ruleXExpression
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getXArrayAccess().getExpressionsXExpressionParserRuleCall_0_3_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleXExpression_in_ruleXArray7316);
                            	    lv_expressions_5_0=ruleXExpression();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getXArrayRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"expressions",
                            	              		lv_expressions_5_0, 
                            	              		"XExpression");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop63;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_6=(Token)match(input,35,FOLLOW_35_in_ruleXArray7332); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getXArrayAccess().getRightSquareBracketKeyword_0_4());
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3387:6: ( () ( ( ( ( ( 'map' ) ) | 'frame' ) )=> ( ( (lv_map_8_0= 'map' ) ) | otherlv_9= 'frame' ) ) otherlv_10= '{' ( ( (lv_keys_11_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_12= '=' ) ( (lv_expressions_13_0= ruleXExpression ) ) (otherlv_14= ',' ( (lv_keys_15_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_16= '=' ) ( (lv_expressions_17_0= ruleXExpression ) ) )* )? otherlv_18= '}' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3387:6: ( () ( ( ( ( ( 'map' ) ) | 'frame' ) )=> ( ( (lv_map_8_0= 'map' ) ) | otherlv_9= 'frame' ) ) otherlv_10= '{' ( ( (lv_keys_11_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_12= '=' ) ( (lv_expressions_13_0= ruleXExpression ) ) (otherlv_14= ',' ( (lv_keys_15_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_16= '=' ) ( (lv_expressions_17_0= ruleXExpression ) ) )* )? otherlv_18= '}' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3387:7: () ( ( ( ( ( 'map' ) ) | 'frame' ) )=> ( ( (lv_map_8_0= 'map' ) ) | otherlv_9= 'frame' ) ) otherlv_10= '{' ( ( (lv_keys_11_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_12= '=' ) ( (lv_expressions_13_0= ruleXExpression ) ) (otherlv_14= ',' ( (lv_keys_15_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_16= '=' ) ( (lv_expressions_17_0= ruleXExpression ) ) )* )? otherlv_18= '}'
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3387:7: ()
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3388:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getXArrayAccess().getXArrayAction_1_0(),
                                  current);
                          
                    }

                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3393:2: ( ( ( ( ( 'map' ) ) | 'frame' ) )=> ( ( (lv_map_8_0= 'map' ) ) | otherlv_9= 'frame' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3393:3: ( ( ( ( 'map' ) ) | 'frame' ) )=> ( ( (lv_map_8_0= 'map' ) ) | otherlv_9= 'frame' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3401:5: ( ( (lv_map_8_0= 'map' ) ) | otherlv_9= 'frame' )
                    int alt65=2;
                    int LA65_0 = input.LA(1);

                    if ( (LA65_0==71) ) {
                        alt65=1;
                    }
                    else if ( (LA65_0==72) ) {
                        alt65=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 65, 0, input);

                        throw nvae;
                    }
                    switch (alt65) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3401:6: ( (lv_map_8_0= 'map' ) )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3401:6: ( (lv_map_8_0= 'map' ) )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3402:1: (lv_map_8_0= 'map' )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3402:1: (lv_map_8_0= 'map' )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3403:3: lv_map_8_0= 'map'
                            {
                            lv_map_8_0=(Token)match(input,71,FOLLOW_71_in_ruleXArray7398); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_map_8_0, grammarAccess.getXArrayAccess().getMapMapKeyword_1_1_0_0_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getXArrayRule());
                              	        }
                                     		setWithLastConsumed(current, "map", true, "map");
                              	    
                            }

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3417:7: otherlv_9= 'frame'
                            {
                            otherlv_9=(Token)match(input,72,FOLLOW_72_in_ruleXArray7429); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_9, grammarAccess.getXArrayAccess().getFrameKeyword_1_1_0_1());
                                  
                            }

                            }
                            break;

                    }


                    }

                    otherlv_10=(Token)match(input,26,FOLLOW_26_in_ruleXArray7443); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_10, grammarAccess.getXArrayAccess().getLeftCurlyBracketKeyword_1_2());
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3425:1: ( ( (lv_keys_11_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_12= '=' ) ( (lv_expressions_13_0= ruleXExpression ) ) (otherlv_14= ',' ( (lv_keys_15_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_16= '=' ) ( (lv_expressions_17_0= ruleXExpression ) ) )* )?
                    int alt67=2;
                    int LA67_0 = input.LA(1);

                    if ( ((LA67_0>=RULE_ID && LA67_0<=RULE_VERBATIM_STRING)||LA67_0==16||(LA67_0>=28 && LA67_0<=30)||(LA67_0>=32 && LA67_0<=33)||(LA67_0>=83 && LA67_0<=85)) ) {
                        alt67=1;
                    }
                    switch (alt67) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3425:2: ( (lv_keys_11_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_12= '=' ) ( (lv_expressions_13_0= ruleXExpression ) ) (otherlv_14= ',' ( (lv_keys_15_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_16= '=' ) ( (lv_expressions_17_0= ruleXExpression ) ) )*
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3425:2: ( (lv_keys_11_0= ruleXArrayKey ) )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3426:1: (lv_keys_11_0= ruleXArrayKey )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3426:1: (lv_keys_11_0= ruleXArrayKey )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3427:3: lv_keys_11_0= ruleXArrayKey
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXArrayAccess().getKeysXArrayKeyParserRuleCall_1_3_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXArrayKey_in_ruleXArray7465);
                            lv_keys_11_0=ruleXArrayKey();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXArrayRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"keys",
                                      		lv_keys_11_0, 
                                      		"XArrayKey");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3443:2: ( ( '=' )=>otherlv_12= '=' )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3443:3: ( '=' )=>otherlv_12= '='
                            {
                            otherlv_12=(Token)match(input,36,FOLLOW_36_in_ruleXArray7485); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_12, grammarAccess.getXArrayAccess().getEqualsSignKeyword_1_3_1());
                                  
                            }

                            }

                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3448:2: ( (lv_expressions_13_0= ruleXExpression ) )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3449:1: (lv_expressions_13_0= ruleXExpression )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3449:1: (lv_expressions_13_0= ruleXExpression )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3450:3: lv_expressions_13_0= ruleXExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXArrayAccess().getExpressionsXExpressionParserRuleCall_1_3_2_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXExpression_in_ruleXArray7507);
                            lv_expressions_13_0=ruleXExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXArrayRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"expressions",
                                      		lv_expressions_13_0, 
                                      		"XExpression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3466:2: (otherlv_14= ',' ( (lv_keys_15_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_16= '=' ) ( (lv_expressions_17_0= ruleXExpression ) ) )*
                            loop66:
                            do {
                                int alt66=2;
                                int LA66_0 = input.LA(1);

                                if ( (LA66_0==18) ) {
                                    alt66=1;
                                }


                                switch (alt66) {
                            	case 1 :
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3466:4: otherlv_14= ',' ( (lv_keys_15_0= ruleXArrayKey ) ) ( ( '=' )=>otherlv_16= '=' ) ( (lv_expressions_17_0= ruleXExpression ) )
                            	    {
                            	    otherlv_14=(Token)match(input,18,FOLLOW_18_in_ruleXArray7520); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_14, grammarAccess.getXArrayAccess().getCommaKeyword_1_3_3_0());
                            	          
                            	    }
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3470:1: ( (lv_keys_15_0= ruleXArrayKey ) )
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3471:1: (lv_keys_15_0= ruleXArrayKey )
                            	    {
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3471:1: (lv_keys_15_0= ruleXArrayKey )
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3472:3: lv_keys_15_0= ruleXArrayKey
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getXArrayAccess().getKeysXArrayKeyParserRuleCall_1_3_3_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleXArrayKey_in_ruleXArray7541);
                            	    lv_keys_15_0=ruleXArrayKey();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getXArrayRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"keys",
                            	              		lv_keys_15_0, 
                            	              		"XArrayKey");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }

                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3488:2: ( ( '=' )=>otherlv_16= '=' )
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3488:3: ( '=' )=>otherlv_16= '='
                            	    {
                            	    otherlv_16=(Token)match(input,36,FOLLOW_36_in_ruleXArray7561); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_16, grammarAccess.getXArrayAccess().getEqualsSignKeyword_1_3_3_2());
                            	          
                            	    }

                            	    }

                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3493:2: ( (lv_expressions_17_0= ruleXExpression ) )
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3494:1: (lv_expressions_17_0= ruleXExpression )
                            	    {
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3494:1: (lv_expressions_17_0= ruleXExpression )
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3495:3: lv_expressions_17_0= ruleXExpression
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getXArrayAccess().getExpressionsXExpressionParserRuleCall_1_3_3_3_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleXExpression_in_ruleXArray7583);
                            	    lv_expressions_17_0=ruleXExpression();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getXArrayRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"expressions",
                            	              		lv_expressions_17_0, 
                            	              		"XExpression");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop66;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_18=(Token)match(input,27,FOLLOW_27_in_ruleXArray7599); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_18, grammarAccess.getXArrayAccess().getRightCurlyBracketKeyword_1_4());
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXArray"


    // $ANTLR start "entryRuleXArrayKey"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3523:1: entryRuleXArrayKey returns [EObject current=null] : iv_ruleXArrayKey= ruleXArrayKey EOF ;
    public final EObject entryRuleXArrayKey() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXArrayKey = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3524:2: (iv_ruleXArrayKey= ruleXArrayKey EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3525:2: iv_ruleXArrayKey= ruleXArrayKey EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXArrayKeyRule()); 
            }
            pushFollow(FOLLOW_ruleXArrayKey_in_entryRuleXArrayKey7636);
            iv_ruleXArrayKey=ruleXArrayKey();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXArrayKey; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXArrayKey7646); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXArrayKey"


    // $ANTLR start "ruleXArrayKey"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3532:1: ruleXArrayKey returns [EObject current=null] : ( ( () ( (lv_name_1_0= ruleDotQualifiedName ) ) ) | this_XLiteral_2= ruleXLiteral ) ;
    public final EObject ruleXArrayKey() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject this_XLiteral_2 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3535:28: ( ( ( () ( (lv_name_1_0= ruleDotQualifiedName ) ) ) | this_XLiteral_2= ruleXLiteral ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3536:1: ( ( () ( (lv_name_1_0= ruleDotQualifiedName ) ) ) | this_XLiteral_2= ruleXLiteral )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3536:1: ( ( () ( (lv_name_1_0= ruleDotQualifiedName ) ) ) | this_XLiteral_2= ruleXLiteral )
            int alt69=2;
            int LA69_0 = input.LA(1);

            if ( (LA69_0==RULE_ID||LA69_0==16||(LA69_0>=28 && LA69_0<=30)||(LA69_0>=32 && LA69_0<=33)) ) {
                alt69=1;
            }
            else if ( ((LA69_0>=RULE_STRING && LA69_0<=RULE_VERBATIM_STRING)||(LA69_0>=83 && LA69_0<=85)) ) {
                alt69=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 69, 0, input);

                throw nvae;
            }
            switch (alt69) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3536:2: ( () ( (lv_name_1_0= ruleDotQualifiedName ) ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3536:2: ( () ( (lv_name_1_0= ruleDotQualifiedName ) ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3536:3: () ( (lv_name_1_0= ruleDotQualifiedName ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3536:3: ()
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3537:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getXArrayKeyAccess().getXArrayKeyAction_0_0(),
                                  current);
                          
                    }

                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3542:2: ( (lv_name_1_0= ruleDotQualifiedName ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3543:1: (lv_name_1_0= ruleDotQualifiedName )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3543:1: (lv_name_1_0= ruleDotQualifiedName )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3544:3: lv_name_1_0= ruleDotQualifiedName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXArrayKeyAccess().getNameDotQualifiedNameParserRuleCall_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleDotQualifiedName_in_ruleXArrayKey7702);
                    lv_name_1_0=ruleDotQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXArrayKeyRule());
                      	        }
                             		set(
                             			current, 
                             			"name",
                              		lv_name_1_0, 
                              		"DotQualifiedName");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3562:5: this_XLiteral_2= ruleXLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXArrayKeyAccess().getXLiteralParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXLiteral_in_ruleXArrayKey7731);
                    this_XLiteral_2=ruleXLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XLiteral_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXArrayKey"


    // $ANTLR start "entryRuleXDataFrameExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3578:1: entryRuleXDataFrameExpression returns [EObject current=null] : iv_ruleXDataFrameExpression= ruleXDataFrameExpression EOF ;
    public final EObject entryRuleXDataFrameExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXDataFrameExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3579:2: (iv_ruleXDataFrameExpression= ruleXDataFrameExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3580:2: iv_ruleXDataFrameExpression= ruleXDataFrameExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXDataFrameExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXDataFrameExpression_in_entryRuleXDataFrameExpression7766);
            iv_ruleXDataFrameExpression=ruleXDataFrameExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXDataFrameExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXDataFrameExpression7776); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXDataFrameExpression"


    // $ANTLR start "ruleXDataFrameExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3587:1: ruleXDataFrameExpression returns [EObject current=null] : ( () otherlv_1= 'struct' (otherlv_2= '[' ( ( ( (lv_extensible_3_0= 'extensible' ) ) (otherlv_4= ',' ( (lv_readonly_5_0= 'readonly' ) ) )? ) | ( ( (lv_readonly_6_0= 'readonly' ) ) (otherlv_7= ',' ( (lv_extensible_8_0= 'extensible' ) ) )? ) ) otherlv_9= ']' )? otherlv_10= '{' ( ( (lv_keys_11_0= RULE_ID ) ) otherlv_12= '=' ( (lv_expressions_13_0= ruleXExpression ) ) (otherlv_14= ',' ( (lv_keys_15_0= RULE_ID ) ) otherlv_16= '=' ( (lv_expressions_17_0= ruleXExpression ) ) )* )? otherlv_18= '}' ) ;
    public final EObject ruleXDataFrameExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token lv_extensible_3_0=null;
        Token otherlv_4=null;
        Token lv_readonly_5_0=null;
        Token lv_readonly_6_0=null;
        Token otherlv_7=null;
        Token lv_extensible_8_0=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token lv_keys_11_0=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        Token lv_keys_15_0=null;
        Token otherlv_16=null;
        Token otherlv_18=null;
        EObject lv_expressions_13_0 = null;

        EObject lv_expressions_17_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3590:28: ( ( () otherlv_1= 'struct' (otherlv_2= '[' ( ( ( (lv_extensible_3_0= 'extensible' ) ) (otherlv_4= ',' ( (lv_readonly_5_0= 'readonly' ) ) )? ) | ( ( (lv_readonly_6_0= 'readonly' ) ) (otherlv_7= ',' ( (lv_extensible_8_0= 'extensible' ) ) )? ) ) otherlv_9= ']' )? otherlv_10= '{' ( ( (lv_keys_11_0= RULE_ID ) ) otherlv_12= '=' ( (lv_expressions_13_0= ruleXExpression ) ) (otherlv_14= ',' ( (lv_keys_15_0= RULE_ID ) ) otherlv_16= '=' ( (lv_expressions_17_0= ruleXExpression ) ) )* )? otherlv_18= '}' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3591:1: ( () otherlv_1= 'struct' (otherlv_2= '[' ( ( ( (lv_extensible_3_0= 'extensible' ) ) (otherlv_4= ',' ( (lv_readonly_5_0= 'readonly' ) ) )? ) | ( ( (lv_readonly_6_0= 'readonly' ) ) (otherlv_7= ',' ( (lv_extensible_8_0= 'extensible' ) ) )? ) ) otherlv_9= ']' )? otherlv_10= '{' ( ( (lv_keys_11_0= RULE_ID ) ) otherlv_12= '=' ( (lv_expressions_13_0= ruleXExpression ) ) (otherlv_14= ',' ( (lv_keys_15_0= RULE_ID ) ) otherlv_16= '=' ( (lv_expressions_17_0= ruleXExpression ) ) )* )? otherlv_18= '}' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3591:1: ( () otherlv_1= 'struct' (otherlv_2= '[' ( ( ( (lv_extensible_3_0= 'extensible' ) ) (otherlv_4= ',' ( (lv_readonly_5_0= 'readonly' ) ) )? ) | ( ( (lv_readonly_6_0= 'readonly' ) ) (otherlv_7= ',' ( (lv_extensible_8_0= 'extensible' ) ) )? ) ) otherlv_9= ']' )? otherlv_10= '{' ( ( (lv_keys_11_0= RULE_ID ) ) otherlv_12= '=' ( (lv_expressions_13_0= ruleXExpression ) ) (otherlv_14= ',' ( (lv_keys_15_0= RULE_ID ) ) otherlv_16= '=' ( (lv_expressions_17_0= ruleXExpression ) ) )* )? otherlv_18= '}' )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3591:2: () otherlv_1= 'struct' (otherlv_2= '[' ( ( ( (lv_extensible_3_0= 'extensible' ) ) (otherlv_4= ',' ( (lv_readonly_5_0= 'readonly' ) ) )? ) | ( ( (lv_readonly_6_0= 'readonly' ) ) (otherlv_7= ',' ( (lv_extensible_8_0= 'extensible' ) ) )? ) ) otherlv_9= ']' )? otherlv_10= '{' ( ( (lv_keys_11_0= RULE_ID ) ) otherlv_12= '=' ( (lv_expressions_13_0= ruleXExpression ) ) (otherlv_14= ',' ( (lv_keys_15_0= RULE_ID ) ) otherlv_16= '=' ( (lv_expressions_17_0= ruleXExpression ) ) )* )? otherlv_18= '}'
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3591:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3592:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXDataFrameExpressionAccess().getXDataFrameAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,73,FOLLOW_73_in_ruleXDataFrameExpression7822); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXDataFrameExpressionAccess().getStructKeyword_1());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3601:1: (otherlv_2= '[' ( ( ( (lv_extensible_3_0= 'extensible' ) ) (otherlv_4= ',' ( (lv_readonly_5_0= 'readonly' ) ) )? ) | ( ( (lv_readonly_6_0= 'readonly' ) ) (otherlv_7= ',' ( (lv_extensible_8_0= 'extensible' ) ) )? ) ) otherlv_9= ']' )?
            int alt73=2;
            int LA73_0 = input.LA(1);

            if ( (LA73_0==34) ) {
                alt73=1;
            }
            switch (alt73) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3601:3: otherlv_2= '[' ( ( ( (lv_extensible_3_0= 'extensible' ) ) (otherlv_4= ',' ( (lv_readonly_5_0= 'readonly' ) ) )? ) | ( ( (lv_readonly_6_0= 'readonly' ) ) (otherlv_7= ',' ( (lv_extensible_8_0= 'extensible' ) ) )? ) ) otherlv_9= ']'
                    {
                    otherlv_2=(Token)match(input,34,FOLLOW_34_in_ruleXDataFrameExpression7835); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getXDataFrameExpressionAccess().getLeftSquareBracketKeyword_2_0());
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3605:1: ( ( ( (lv_extensible_3_0= 'extensible' ) ) (otherlv_4= ',' ( (lv_readonly_5_0= 'readonly' ) ) )? ) | ( ( (lv_readonly_6_0= 'readonly' ) ) (otherlv_7= ',' ( (lv_extensible_8_0= 'extensible' ) ) )? ) )
                    int alt72=2;
                    int LA72_0 = input.LA(1);

                    if ( (LA72_0==74) ) {
                        alt72=1;
                    }
                    else if ( (LA72_0==75) ) {
                        alt72=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 72, 0, input);

                        throw nvae;
                    }
                    switch (alt72) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3605:2: ( ( (lv_extensible_3_0= 'extensible' ) ) (otherlv_4= ',' ( (lv_readonly_5_0= 'readonly' ) ) )? )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3605:2: ( ( (lv_extensible_3_0= 'extensible' ) ) (otherlv_4= ',' ( (lv_readonly_5_0= 'readonly' ) ) )? )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3605:3: ( (lv_extensible_3_0= 'extensible' ) ) (otherlv_4= ',' ( (lv_readonly_5_0= 'readonly' ) ) )?
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3605:3: ( (lv_extensible_3_0= 'extensible' ) )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3606:1: (lv_extensible_3_0= 'extensible' )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3606:1: (lv_extensible_3_0= 'extensible' )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3607:3: lv_extensible_3_0= 'extensible'
                            {
                            lv_extensible_3_0=(Token)match(input,74,FOLLOW_74_in_ruleXDataFrameExpression7855); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_extensible_3_0, grammarAccess.getXDataFrameExpressionAccess().getExtensibleExtensibleKeyword_2_1_0_0_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getXDataFrameExpressionRule());
                              	        }
                                     		setWithLastConsumed(current, "extensible", true, "extensible");
                              	    
                            }

                            }


                            }

                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3620:2: (otherlv_4= ',' ( (lv_readonly_5_0= 'readonly' ) ) )?
                            int alt70=2;
                            int LA70_0 = input.LA(1);

                            if ( (LA70_0==18) ) {
                                alt70=1;
                            }
                            switch (alt70) {
                                case 1 :
                                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3620:4: otherlv_4= ',' ( (lv_readonly_5_0= 'readonly' ) )
                                    {
                                    otherlv_4=(Token)match(input,18,FOLLOW_18_in_ruleXDataFrameExpression7881); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                          	newLeafNode(otherlv_4, grammarAccess.getXDataFrameExpressionAccess().getCommaKeyword_2_1_0_1_0());
                                          
                                    }
                                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3624:1: ( (lv_readonly_5_0= 'readonly' ) )
                                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3625:1: (lv_readonly_5_0= 'readonly' )
                                    {
                                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3625:1: (lv_readonly_5_0= 'readonly' )
                                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3626:3: lv_readonly_5_0= 'readonly'
                                    {
                                    lv_readonly_5_0=(Token)match(input,75,FOLLOW_75_in_ruleXDataFrameExpression7899); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                              newLeafNode(lv_readonly_5_0, grammarAccess.getXDataFrameExpressionAccess().getReadonlyReadonlyKeyword_2_1_0_1_1_0());
                                          
                                    }
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElement(grammarAccess.getXDataFrameExpressionRule());
                                      	        }
                                             		setWithLastConsumed(current, "readonly", true, "readonly");
                                      	    
                                    }

                                    }


                                    }


                                    }
                                    break;

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3640:6: ( ( (lv_readonly_6_0= 'readonly' ) ) (otherlv_7= ',' ( (lv_extensible_8_0= 'extensible' ) ) )? )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3640:6: ( ( (lv_readonly_6_0= 'readonly' ) ) (otherlv_7= ',' ( (lv_extensible_8_0= 'extensible' ) ) )? )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3640:7: ( (lv_readonly_6_0= 'readonly' ) ) (otherlv_7= ',' ( (lv_extensible_8_0= 'extensible' ) ) )?
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3640:7: ( (lv_readonly_6_0= 'readonly' ) )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3641:1: (lv_readonly_6_0= 'readonly' )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3641:1: (lv_readonly_6_0= 'readonly' )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3642:3: lv_readonly_6_0= 'readonly'
                            {
                            lv_readonly_6_0=(Token)match(input,75,FOLLOW_75_in_ruleXDataFrameExpression7940); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_readonly_6_0, grammarAccess.getXDataFrameExpressionAccess().getReadonlyReadonlyKeyword_2_1_1_0_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getXDataFrameExpressionRule());
                              	        }
                                     		setWithLastConsumed(current, "readonly", true, "readonly");
                              	    
                            }

                            }


                            }

                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3655:2: (otherlv_7= ',' ( (lv_extensible_8_0= 'extensible' ) ) )?
                            int alt71=2;
                            int LA71_0 = input.LA(1);

                            if ( (LA71_0==18) ) {
                                alt71=1;
                            }
                            switch (alt71) {
                                case 1 :
                                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3655:4: otherlv_7= ',' ( (lv_extensible_8_0= 'extensible' ) )
                                    {
                                    otherlv_7=(Token)match(input,18,FOLLOW_18_in_ruleXDataFrameExpression7966); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                          	newLeafNode(otherlv_7, grammarAccess.getXDataFrameExpressionAccess().getCommaKeyword_2_1_1_1_0());
                                          
                                    }
                                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3659:1: ( (lv_extensible_8_0= 'extensible' ) )
                                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3660:1: (lv_extensible_8_0= 'extensible' )
                                    {
                                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3660:1: (lv_extensible_8_0= 'extensible' )
                                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3661:3: lv_extensible_8_0= 'extensible'
                                    {
                                    lv_extensible_8_0=(Token)match(input,74,FOLLOW_74_in_ruleXDataFrameExpression7984); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                              newLeafNode(lv_extensible_8_0, grammarAccess.getXDataFrameExpressionAccess().getExtensibleExtensibleKeyword_2_1_1_1_1_0());
                                          
                                    }
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElement(grammarAccess.getXDataFrameExpressionRule());
                                      	        }
                                             		setWithLastConsumed(current, "extensible", true, "extensible");
                                      	    
                                    }

                                    }


                                    }


                                    }
                                    break;

                            }


                            }


                            }
                            break;

                    }

                    otherlv_9=(Token)match(input,35,FOLLOW_35_in_ruleXDataFrameExpression8013); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_9, grammarAccess.getXDataFrameExpressionAccess().getRightSquareBracketKeyword_2_2());
                          
                    }

                    }
                    break;

            }

            otherlv_10=(Token)match(input,26,FOLLOW_26_in_ruleXDataFrameExpression8027); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_10, grammarAccess.getXDataFrameExpressionAccess().getLeftCurlyBracketKeyword_3());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3682:1: ( ( (lv_keys_11_0= RULE_ID ) ) otherlv_12= '=' ( (lv_expressions_13_0= ruleXExpression ) ) (otherlv_14= ',' ( (lv_keys_15_0= RULE_ID ) ) otherlv_16= '=' ( (lv_expressions_17_0= ruleXExpression ) ) )* )?
            int alt75=2;
            int LA75_0 = input.LA(1);

            if ( (LA75_0==RULE_ID) ) {
                alt75=1;
            }
            switch (alt75) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3682:2: ( (lv_keys_11_0= RULE_ID ) ) otherlv_12= '=' ( (lv_expressions_13_0= ruleXExpression ) ) (otherlv_14= ',' ( (lv_keys_15_0= RULE_ID ) ) otherlv_16= '=' ( (lv_expressions_17_0= ruleXExpression ) ) )*
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3682:2: ( (lv_keys_11_0= RULE_ID ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3683:1: (lv_keys_11_0= RULE_ID )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3683:1: (lv_keys_11_0= RULE_ID )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3684:3: lv_keys_11_0= RULE_ID
                    {
                    lv_keys_11_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleXDataFrameExpression8045); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_keys_11_0, grammarAccess.getXDataFrameExpressionAccess().getKeysIDTerminalRuleCall_4_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXDataFrameExpressionRule());
                      	        }
                             		addWithLastConsumed(
                             			current, 
                             			"keys",
                              		lv_keys_11_0, 
                              		"ID");
                      	    
                    }

                    }


                    }

                    otherlv_12=(Token)match(input,36,FOLLOW_36_in_ruleXDataFrameExpression8062); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_12, grammarAccess.getXDataFrameExpressionAccess().getEqualsSignKeyword_4_1());
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3704:1: ( (lv_expressions_13_0= ruleXExpression ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3705:1: (lv_expressions_13_0= ruleXExpression )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3705:1: (lv_expressions_13_0= ruleXExpression )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3706:3: lv_expressions_13_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXDataFrameExpressionAccess().getExpressionsXExpressionParserRuleCall_4_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXDataFrameExpression8083);
                    lv_expressions_13_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXDataFrameExpressionRule());
                      	        }
                             		add(
                             			current, 
                             			"expressions",
                              		lv_expressions_13_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3722:2: (otherlv_14= ',' ( (lv_keys_15_0= RULE_ID ) ) otherlv_16= '=' ( (lv_expressions_17_0= ruleXExpression ) ) )*
                    loop74:
                    do {
                        int alt74=2;
                        int LA74_0 = input.LA(1);

                        if ( (LA74_0==18) ) {
                            alt74=1;
                        }


                        switch (alt74) {
                    	case 1 :
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3722:4: otherlv_14= ',' ( (lv_keys_15_0= RULE_ID ) ) otherlv_16= '=' ( (lv_expressions_17_0= ruleXExpression ) )
                    	    {
                    	    otherlv_14=(Token)match(input,18,FOLLOW_18_in_ruleXDataFrameExpression8096); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_14, grammarAccess.getXDataFrameExpressionAccess().getCommaKeyword_4_3_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3726:1: ( (lv_keys_15_0= RULE_ID ) )
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3727:1: (lv_keys_15_0= RULE_ID )
                    	    {
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3727:1: (lv_keys_15_0= RULE_ID )
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3728:3: lv_keys_15_0= RULE_ID
                    	    {
                    	    lv_keys_15_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleXDataFrameExpression8113); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      			newLeafNode(lv_keys_15_0, grammarAccess.getXDataFrameExpressionAccess().getKeysIDTerminalRuleCall_4_3_1_0()); 
                    	      		
                    	    }
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElement(grammarAccess.getXDataFrameExpressionRule());
                    	      	        }
                    	             		addWithLastConsumed(
                    	             			current, 
                    	             			"keys",
                    	              		lv_keys_15_0, 
                    	              		"ID");
                    	      	    
                    	    }

                    	    }


                    	    }

                    	    otherlv_16=(Token)match(input,36,FOLLOW_36_in_ruleXDataFrameExpression8130); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_16, grammarAccess.getXDataFrameExpressionAccess().getEqualsSignKeyword_4_3_2());
                    	          
                    	    }
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3748:1: ( (lv_expressions_17_0= ruleXExpression ) )
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3749:1: (lv_expressions_17_0= ruleXExpression )
                    	    {
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3749:1: (lv_expressions_17_0= ruleXExpression )
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3750:3: lv_expressions_17_0= ruleXExpression
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXDataFrameExpressionAccess().getExpressionsXExpressionParserRuleCall_4_3_3_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleXExpression_in_ruleXDataFrameExpression8151);
                    	    lv_expressions_17_0=ruleXExpression();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXDataFrameExpressionRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"expressions",
                    	              		lv_expressions_17_0, 
                    	              		"XExpression");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop74;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_18=(Token)match(input,27,FOLLOW_27_in_ruleXDataFrameExpression8167); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_18, grammarAccess.getXDataFrameExpressionAccess().getRightCurlyBracketKeyword_5());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXDataFrameExpression"


    // $ANTLR start "entryRuleXReturnStatement"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3778:1: entryRuleXReturnStatement returns [EObject current=null] : iv_ruleXReturnStatement= ruleXReturnStatement EOF ;
    public final EObject entryRuleXReturnStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXReturnStatement = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3779:2: (iv_ruleXReturnStatement= ruleXReturnStatement EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3780:2: iv_ruleXReturnStatement= ruleXReturnStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXReturnStatementRule()); 
            }
            pushFollow(FOLLOW_ruleXReturnStatement_in_entryRuleXReturnStatement8203);
            iv_ruleXReturnStatement=ruleXReturnStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXReturnStatement; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXReturnStatement8213); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXReturnStatement"


    // $ANTLR start "ruleXReturnStatement"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3787:1: ruleXReturnStatement returns [EObject current=null] : ( () ( (lv_return_1_0= 'return' ) ) ( ( ( ruleXExpression ) )=> (lv_value_2_0= ruleXExpression ) )? ) ;
    public final EObject ruleXReturnStatement() throws RecognitionException {
        EObject current = null;

        Token lv_return_1_0=null;
        EObject lv_value_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3790:28: ( ( () ( (lv_return_1_0= 'return' ) ) ( ( ( ruleXExpression ) )=> (lv_value_2_0= ruleXExpression ) )? ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3791:1: ( () ( (lv_return_1_0= 'return' ) ) ( ( ( ruleXExpression ) )=> (lv_value_2_0= ruleXExpression ) )? )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3791:1: ( () ( (lv_return_1_0= 'return' ) ) ( ( ( ruleXExpression ) )=> (lv_value_2_0= ruleXExpression ) )? )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3791:2: () ( (lv_return_1_0= 'return' ) ) ( ( ( ruleXExpression ) )=> (lv_value_2_0= ruleXExpression ) )?
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3791:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3792:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXReturnStatementAccess().getXReturnStatementAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3797:2: ( (lv_return_1_0= 'return' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3798:1: (lv_return_1_0= 'return' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3798:1: (lv_return_1_0= 'return' )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3799:3: lv_return_1_0= 'return'
            {
            lv_return_1_0=(Token)match(input,76,FOLLOW_76_in_ruleXReturnStatement8265); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_return_1_0, grammarAccess.getXReturnStatementAccess().getReturnReturnKeyword_1_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getXReturnStatementRule());
              	        }
                     		setWithLastConsumed(current, "return", true, "return");
              	    
            }

            }


            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3812:2: ( ( ( ruleXExpression ) )=> (lv_value_2_0= ruleXExpression ) )?
            int alt76=2;
            alt76 = dfa76.predict(input);
            switch (alt76) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3812:3: ( ( ruleXExpression ) )=> (lv_value_2_0= ruleXExpression )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3817:1: (lv_value_2_0= ruleXExpression )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3818:3: lv_value_2_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXReturnStatementAccess().getValueXExpressionParserRuleCall_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXReturnStatement8309);
                    lv_value_2_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXReturnStatementRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_2_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXReturnStatement"


    // $ANTLR start "entryRuleXBreakContinueExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3842:1: entryRuleXBreakContinueExpression returns [EObject current=null] : iv_ruleXBreakContinueExpression= ruleXBreakContinueExpression EOF ;
    public final EObject entryRuleXBreakContinueExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXBreakContinueExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3843:2: (iv_ruleXBreakContinueExpression= ruleXBreakContinueExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3844:2: iv_ruleXBreakContinueExpression= ruleXBreakContinueExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXBreakContinueExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXBreakContinueExpression_in_entryRuleXBreakContinueExpression8346);
            iv_ruleXBreakContinueExpression=ruleXBreakContinueExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXBreakContinueExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXBreakContinueExpression8356); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXBreakContinueExpression"


    // $ANTLR start "ruleXBreakContinueExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3851:1: ruleXBreakContinueExpression returns [EObject current=null] : ( ( () ( (lv_break_1_0= 'break' ) ) ) | ( (lv_continue_2_0= 'continue' ) ) ) ;
    public final EObject ruleXBreakContinueExpression() throws RecognitionException {
        EObject current = null;

        Token lv_break_1_0=null;
        Token lv_continue_2_0=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3854:28: ( ( ( () ( (lv_break_1_0= 'break' ) ) ) | ( (lv_continue_2_0= 'continue' ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3855:1: ( ( () ( (lv_break_1_0= 'break' ) ) ) | ( (lv_continue_2_0= 'continue' ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3855:1: ( ( () ( (lv_break_1_0= 'break' ) ) ) | ( (lv_continue_2_0= 'continue' ) ) )
            int alt77=2;
            int LA77_0 = input.LA(1);

            if ( (LA77_0==77) ) {
                alt77=1;
            }
            else if ( (LA77_0==78) ) {
                alt77=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 77, 0, input);

                throw nvae;
            }
            switch (alt77) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3855:2: ( () ( (lv_break_1_0= 'break' ) ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3855:2: ( () ( (lv_break_1_0= 'break' ) ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3855:3: () ( (lv_break_1_0= 'break' ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3855:3: ()
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3856:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getXBreakContinueExpressionAccess().getXReturnStatementAction_0_0(),
                                  current);
                          
                    }

                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3861:2: ( (lv_break_1_0= 'break' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3862:1: (lv_break_1_0= 'break' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3862:1: (lv_break_1_0= 'break' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3863:3: lv_break_1_0= 'break'
                    {
                    lv_break_1_0=(Token)match(input,77,FOLLOW_77_in_ruleXBreakContinueExpression8409); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_break_1_0, grammarAccess.getXBreakContinueExpressionAccess().getBreakBreakKeyword_0_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXBreakContinueExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "break", true, "break");
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3877:6: ( (lv_continue_2_0= 'continue' ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3877:6: ( (lv_continue_2_0= 'continue' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3878:1: (lv_continue_2_0= 'continue' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3878:1: (lv_continue_2_0= 'continue' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3879:3: lv_continue_2_0= 'continue'
                    {
                    lv_continue_2_0=(Token)match(input,78,FOLLOW_78_in_ruleXBreakContinueExpression8447); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_continue_2_0, grammarAccess.getXBreakContinueExpressionAccess().getContinueContinueKeyword_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXBreakContinueExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "continue", true, "continue");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXBreakContinueExpression"


    // $ANTLR start "entryRuleStatement"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3900:1: entryRuleStatement returns [EObject current=null] : iv_ruleStatement= ruleStatement EOF ;
    public final EObject entryRuleStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStatement = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3901:2: (iv_ruleStatement= ruleStatement EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3902:2: iv_ruleStatement= ruleStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getStatementRule()); 
            }
            pushFollow(FOLLOW_ruleStatement_in_entryRuleStatement8496);
            iv_ruleStatement=ruleStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleStatement; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleStatement8506); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStatement"


    // $ANTLR start "ruleStatement"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3909:1: ruleStatement returns [EObject current=null] : ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XReturnStatement_1= ruleXReturnStatement | this_XBreakContinueExpression_2= ruleXBreakContinueExpression | this_XExpression_3= ruleXExpression ) ( ( ';' )=>otherlv_4= ';' )? ) ;
    public final EObject ruleStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_4=null;
        EObject this_XVariableDeclaration_0 = null;

        EObject this_XReturnStatement_1 = null;

        EObject this_XBreakContinueExpression_2 = null;

        EObject this_XExpression_3 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3912:28: ( ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XReturnStatement_1= ruleXReturnStatement | this_XBreakContinueExpression_2= ruleXBreakContinueExpression | this_XExpression_3= ruleXExpression ) ( ( ';' )=>otherlv_4= ';' )? ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3913:1: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XReturnStatement_1= ruleXReturnStatement | this_XBreakContinueExpression_2= ruleXBreakContinueExpression | this_XExpression_3= ruleXExpression ) ( ( ';' )=>otherlv_4= ';' )? )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3913:1: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XReturnStatement_1= ruleXReturnStatement | this_XBreakContinueExpression_2= ruleXBreakContinueExpression | this_XExpression_3= ruleXExpression ) ( ( ';' )=>otherlv_4= ';' )? )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3913:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XReturnStatement_1= ruleXReturnStatement | this_XBreakContinueExpression_2= ruleXBreakContinueExpression | this_XExpression_3= ruleXExpression ) ( ( ';' )=>otherlv_4= ';' )?
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3913:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XReturnStatement_1= ruleXReturnStatement | this_XBreakContinueExpression_2= ruleXBreakContinueExpression | this_XExpression_3= ruleXExpression )
            int alt78=4;
            switch ( input.LA(1) ) {
            case 40:
            case 41:
                {
                alt78=1;
                }
                break;
            case 76:
                {
                alt78=2;
                }
                break;
            case 77:
            case 78:
                {
                alt78=3;
                }
                break;
            case RULE_ID:
            case RULE_STRING:
            case RULE_INT:
            case RULE_HEX:
            case RULE_FLOAT:
            case RULE_VERBATIM_STRING:
            case 17:
            case 34:
            case 42:
            case 56:
            case 65:
            case 70:
            case 71:
            case 72:
            case 73:
            case 79:
            case 81:
            case 82:
            case 83:
            case 84:
            case 85:
            case 86:
            case 87:
            case 88:
            case 90:
            case 91:
                {
                alt78=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 78, 0, input);

                throw nvae;
            }

            switch (alt78) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3914:5: this_XVariableDeclaration_0= ruleXVariableDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getXVariableDeclarationParserRuleCall_0_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXVariableDeclaration_in_ruleStatement8554);
                    this_XVariableDeclaration_0=ruleXVariableDeclaration();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XVariableDeclaration_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3924:5: this_XReturnStatement_1= ruleXReturnStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getXReturnStatementParserRuleCall_0_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXReturnStatement_in_ruleStatement8581);
                    this_XReturnStatement_1=ruleXReturnStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XReturnStatement_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3934:5: this_XBreakContinueExpression_2= ruleXBreakContinueExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getXBreakContinueExpressionParserRuleCall_0_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXBreakContinueExpression_in_ruleStatement8608);
                    this_XBreakContinueExpression_2=ruleXBreakContinueExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XBreakContinueExpression_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3944:5: this_XExpression_3= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getXExpressionParserRuleCall_0_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleStatement8635);
                    this_XExpression_3=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XExpression_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3952:2: ( ( ';' )=>otherlv_4= ';' )?
            int alt79=2;
            int LA79_0 = input.LA(1);

            if ( (LA79_0==15) ) {
                int LA79_1 = input.LA(2);

                if ( (synpred17_InternalUnicornDSL()) ) {
                    alt79=1;
                }
            }
            switch (alt79) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3952:3: ( ';' )=>otherlv_4= ';'
                    {
                    otherlv_4=(Token)match(input,15,FOLLOW_15_in_ruleStatement8655); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getStatementAccess().getSemicolonKeyword_1());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStatement"


    // $ANTLR start "entryRuleXStrictBlockExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3965:1: entryRuleXStrictBlockExpression returns [EObject current=null] : iv_ruleXStrictBlockExpression= ruleXStrictBlockExpression EOF ;
    public final EObject entryRuleXStrictBlockExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXStrictBlockExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3966:2: (iv_ruleXStrictBlockExpression= ruleXStrictBlockExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3967:2: iv_ruleXStrictBlockExpression= ruleXStrictBlockExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXStrictBlockExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXStrictBlockExpression_in_entryRuleXStrictBlockExpression8693);
            iv_ruleXStrictBlockExpression=ruleXStrictBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXStrictBlockExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXStrictBlockExpression8703); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXStrictBlockExpression"


    // $ANTLR start "ruleXStrictBlockExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3974:1: ruleXStrictBlockExpression returns [EObject current=null] : ( () otherlv_1= 'eval' ( ( '{' )=>otherlv_2= '{' ) ( (lv_expressions_3_0= ruleStatement ) )* otherlv_4= '}' ) ;
    public final EObject ruleXStrictBlockExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_expressions_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3977:28: ( ( () otherlv_1= 'eval' ( ( '{' )=>otherlv_2= '{' ) ( (lv_expressions_3_0= ruleStatement ) )* otherlv_4= '}' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3978:1: ( () otherlv_1= 'eval' ( ( '{' )=>otherlv_2= '{' ) ( (lv_expressions_3_0= ruleStatement ) )* otherlv_4= '}' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3978:1: ( () otherlv_1= 'eval' ( ( '{' )=>otherlv_2= '{' ) ( (lv_expressions_3_0= ruleStatement ) )* otherlv_4= '}' )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3978:2: () otherlv_1= 'eval' ( ( '{' )=>otherlv_2= '{' ) ( (lv_expressions_3_0= ruleStatement ) )* otherlv_4= '}'
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3978:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3979:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXStrictBlockExpressionAccess().getXBlockExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,79,FOLLOW_79_in_ruleXStrictBlockExpression8749); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXStrictBlockExpressionAccess().getEvalKeyword_1());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3988:1: ( ( '{' )=>otherlv_2= '{' )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3988:2: ( '{' )=>otherlv_2= '{'
            {
            otherlv_2=(Token)match(input,26,FOLLOW_26_in_ruleXStrictBlockExpression8769); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXStrictBlockExpressionAccess().getLeftCurlyBracketKeyword_2());
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3993:2: ( (lv_expressions_3_0= ruleStatement ) )*
            loop80:
            do {
                int alt80=2;
                int LA80_0 = input.LA(1);

                if ( ((LA80_0>=RULE_ID && LA80_0<=RULE_VERBATIM_STRING)||LA80_0==17||LA80_0==34||(LA80_0>=40 && LA80_0<=42)||LA80_0==56||LA80_0==65||(LA80_0>=70 && LA80_0<=73)||(LA80_0>=76 && LA80_0<=79)||(LA80_0>=81 && LA80_0<=88)||(LA80_0>=90 && LA80_0<=91)) ) {
                    alt80=1;
                }


                switch (alt80) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3994:1: (lv_expressions_3_0= ruleStatement )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3994:1: (lv_expressions_3_0= ruleStatement )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3995:3: lv_expressions_3_0= ruleStatement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXStrictBlockExpressionAccess().getExpressionsStatementParserRuleCall_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleStatement_in_ruleXStrictBlockExpression8791);
            	    lv_expressions_3_0=ruleStatement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXStrictBlockExpressionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"expressions",
            	              		lv_expressions_3_0, 
            	              		"Statement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop80;
                }
            } while (true);

            otherlv_4=(Token)match(input,27,FOLLOW_27_in_ruleXStrictBlockExpression8804); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXStrictBlockExpressionAccess().getRightCurlyBracketKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXStrictBlockExpression"


    // $ANTLR start "entryRuleXBlockExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4023:1: entryRuleXBlockExpression returns [EObject current=null] : iv_ruleXBlockExpression= ruleXBlockExpression EOF ;
    public final EObject entryRuleXBlockExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXBlockExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4024:2: (iv_ruleXBlockExpression= ruleXBlockExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4025:2: iv_ruleXBlockExpression= ruleXBlockExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXBlockExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXBlockExpression_in_entryRuleXBlockExpression8840);
            iv_ruleXBlockExpression=ruleXBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXBlockExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXBlockExpression8850); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXBlockExpression"


    // $ANTLR start "ruleXBlockExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4032:1: ruleXBlockExpression returns [EObject current=null] : ( ( () ( (lv_expressions_1_0= ruleStatement ) ) ) | ( () otherlv_3= '{' ( (lv_expressions_4_0= ruleStatement ) )* ( ( '}' )=>otherlv_5= '}' ) ) ) ;
    public final EObject ruleXBlockExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_expressions_1_0 = null;

        EObject lv_expressions_4_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4035:28: ( ( ( () ( (lv_expressions_1_0= ruleStatement ) ) ) | ( () otherlv_3= '{' ( (lv_expressions_4_0= ruleStatement ) )* ( ( '}' )=>otherlv_5= '}' ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4036:1: ( ( () ( (lv_expressions_1_0= ruleStatement ) ) ) | ( () otherlv_3= '{' ( (lv_expressions_4_0= ruleStatement ) )* ( ( '}' )=>otherlv_5= '}' ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4036:1: ( ( () ( (lv_expressions_1_0= ruleStatement ) ) ) | ( () otherlv_3= '{' ( (lv_expressions_4_0= ruleStatement ) )* ( ( '}' )=>otherlv_5= '}' ) ) )
            int alt82=2;
            int LA82_0 = input.LA(1);

            if ( ((LA82_0>=RULE_ID && LA82_0<=RULE_VERBATIM_STRING)||LA82_0==17||LA82_0==34||(LA82_0>=40 && LA82_0<=42)||LA82_0==56||LA82_0==65||(LA82_0>=70 && LA82_0<=73)||(LA82_0>=76 && LA82_0<=79)||(LA82_0>=81 && LA82_0<=88)||(LA82_0>=90 && LA82_0<=91)) ) {
                alt82=1;
            }
            else if ( (LA82_0==26) ) {
                alt82=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 82, 0, input);

                throw nvae;
            }
            switch (alt82) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4036:2: ( () ( (lv_expressions_1_0= ruleStatement ) ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4036:2: ( () ( (lv_expressions_1_0= ruleStatement ) ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4036:3: () ( (lv_expressions_1_0= ruleStatement ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4036:3: ()
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4037:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0_0(),
                                  current);
                          
                    }

                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4042:2: ( (lv_expressions_1_0= ruleStatement ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4043:1: (lv_expressions_1_0= ruleStatement )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4043:1: (lv_expressions_1_0= ruleStatement )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4044:3: lv_expressions_1_0= ruleStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXBlockExpressionAccess().getExpressionsStatementParserRuleCall_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleStatement_in_ruleXBlockExpression8906);
                    lv_expressions_1_0=ruleStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXBlockExpressionRule());
                      	        }
                             		add(
                             			current, 
                             			"expressions",
                              		lv_expressions_1_0, 
                              		"Statement");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4061:6: ( () otherlv_3= '{' ( (lv_expressions_4_0= ruleStatement ) )* ( ( '}' )=>otherlv_5= '}' ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4061:6: ( () otherlv_3= '{' ( (lv_expressions_4_0= ruleStatement ) )* ( ( '}' )=>otherlv_5= '}' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4061:7: () otherlv_3= '{' ( (lv_expressions_4_0= ruleStatement ) )* ( ( '}' )=>otherlv_5= '}' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4061:7: ()
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4062:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_1_0(),
                                  current);
                          
                    }

                    }

                    otherlv_3=(Token)match(input,26,FOLLOW_26_in_ruleXBlockExpression8935); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1_1());
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4071:1: ( (lv_expressions_4_0= ruleStatement ) )*
                    loop81:
                    do {
                        int alt81=2;
                        int LA81_0 = input.LA(1);

                        if ( ((LA81_0>=RULE_ID && LA81_0<=RULE_VERBATIM_STRING)||LA81_0==17||LA81_0==34||(LA81_0>=40 && LA81_0<=42)||LA81_0==56||LA81_0==65||(LA81_0>=70 && LA81_0<=73)||(LA81_0>=76 && LA81_0<=79)||(LA81_0>=81 && LA81_0<=88)||(LA81_0>=90 && LA81_0<=91)) ) {
                            alt81=1;
                        }


                        switch (alt81) {
                    	case 1 :
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4072:1: (lv_expressions_4_0= ruleStatement )
                    	    {
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4072:1: (lv_expressions_4_0= ruleStatement )
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4073:3: lv_expressions_4_0= ruleStatement
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXBlockExpressionAccess().getExpressionsStatementParserRuleCall_1_2_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleStatement_in_ruleXBlockExpression8956);
                    	    lv_expressions_4_0=ruleStatement();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXBlockExpressionRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"expressions",
                    	              		lv_expressions_4_0, 
                    	              		"Statement");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop81;
                        }
                    } while (true);

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4089:3: ( ( '}' )=>otherlv_5= '}' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4089:4: ( '}' )=>otherlv_5= '}'
                    {
                    otherlv_5=(Token)match(input,27,FOLLOW_27_in_ruleXBlockExpression8977); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_1_3());
                          
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXBlockExpression"


    // $ANTLR start "entryRuleXBreakableBlockExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4102:1: entryRuleXBreakableBlockExpression returns [EObject current=null] : iv_ruleXBreakableBlockExpression= ruleXBreakableBlockExpression EOF ;
    public final EObject entryRuleXBreakableBlockExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXBreakableBlockExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4103:2: (iv_ruleXBreakableBlockExpression= ruleXBreakableBlockExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4104:2: iv_ruleXBreakableBlockExpression= ruleXBreakableBlockExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXBreakableBlockExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXBreakableBlockExpression_in_entryRuleXBreakableBlockExpression9015);
            iv_ruleXBreakableBlockExpression=ruleXBreakableBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXBreakableBlockExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXBreakableBlockExpression9025); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXBreakableBlockExpression"


    // $ANTLR start "ruleXBreakableBlockExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4111:1: ruleXBreakableBlockExpression returns [EObject current=null] : ( ( () ( (lv_expressions_1_0= ruleStatement ) ) ) | ( () otherlv_3= '{' ( (lv_expressions_4_0= ruleStatement ) )* ( ( '}' )=>otherlv_5= '}' ) ) ) ;
    public final EObject ruleXBreakableBlockExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_expressions_1_0 = null;

        EObject lv_expressions_4_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4114:28: ( ( ( () ( (lv_expressions_1_0= ruleStatement ) ) ) | ( () otherlv_3= '{' ( (lv_expressions_4_0= ruleStatement ) )* ( ( '}' )=>otherlv_5= '}' ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4115:1: ( ( () ( (lv_expressions_1_0= ruleStatement ) ) ) | ( () otherlv_3= '{' ( (lv_expressions_4_0= ruleStatement ) )* ( ( '}' )=>otherlv_5= '}' ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4115:1: ( ( () ( (lv_expressions_1_0= ruleStatement ) ) ) | ( () otherlv_3= '{' ( (lv_expressions_4_0= ruleStatement ) )* ( ( '}' )=>otherlv_5= '}' ) ) )
            int alt84=2;
            int LA84_0 = input.LA(1);

            if ( ((LA84_0>=RULE_ID && LA84_0<=RULE_VERBATIM_STRING)||LA84_0==17||LA84_0==34||(LA84_0>=40 && LA84_0<=42)||LA84_0==56||LA84_0==65||(LA84_0>=70 && LA84_0<=73)||(LA84_0>=76 && LA84_0<=79)||(LA84_0>=81 && LA84_0<=88)||(LA84_0>=90 && LA84_0<=91)) ) {
                alt84=1;
            }
            else if ( (LA84_0==26) ) {
                alt84=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 84, 0, input);

                throw nvae;
            }
            switch (alt84) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4115:2: ( () ( (lv_expressions_1_0= ruleStatement ) ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4115:2: ( () ( (lv_expressions_1_0= ruleStatement ) ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4115:3: () ( (lv_expressions_1_0= ruleStatement ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4115:3: ()
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4116:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getXBreakableBlockExpressionAccess().getXBlockExpressionAction_0_0(),
                                  current);
                          
                    }

                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4121:2: ( (lv_expressions_1_0= ruleStatement ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4122:1: (lv_expressions_1_0= ruleStatement )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4122:1: (lv_expressions_1_0= ruleStatement )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4123:3: lv_expressions_1_0= ruleStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXBreakableBlockExpressionAccess().getExpressionsStatementParserRuleCall_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleStatement_in_ruleXBreakableBlockExpression9081);
                    lv_expressions_1_0=ruleStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXBreakableBlockExpressionRule());
                      	        }
                             		add(
                             			current, 
                             			"expressions",
                              		lv_expressions_1_0, 
                              		"Statement");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4140:6: ( () otherlv_3= '{' ( (lv_expressions_4_0= ruleStatement ) )* ( ( '}' )=>otherlv_5= '}' ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4140:6: ( () otherlv_3= '{' ( (lv_expressions_4_0= ruleStatement ) )* ( ( '}' )=>otherlv_5= '}' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4140:7: () otherlv_3= '{' ( (lv_expressions_4_0= ruleStatement ) )* ( ( '}' )=>otherlv_5= '}' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4140:7: ()
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4141:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getXBreakableBlockExpressionAccess().getXBlockExpressionAction_1_0(),
                                  current);
                          
                    }

                    }

                    otherlv_3=(Token)match(input,26,FOLLOW_26_in_ruleXBreakableBlockExpression9110); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getXBreakableBlockExpressionAccess().getLeftCurlyBracketKeyword_1_1());
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4150:1: ( (lv_expressions_4_0= ruleStatement ) )*
                    loop83:
                    do {
                        int alt83=2;
                        int LA83_0 = input.LA(1);

                        if ( ((LA83_0>=RULE_ID && LA83_0<=RULE_VERBATIM_STRING)||LA83_0==17||LA83_0==34||(LA83_0>=40 && LA83_0<=42)||LA83_0==56||LA83_0==65||(LA83_0>=70 && LA83_0<=73)||(LA83_0>=76 && LA83_0<=79)||(LA83_0>=81 && LA83_0<=88)||(LA83_0>=90 && LA83_0<=91)) ) {
                            alt83=1;
                        }


                        switch (alt83) {
                    	case 1 :
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4151:1: (lv_expressions_4_0= ruleStatement )
                    	    {
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4151:1: (lv_expressions_4_0= ruleStatement )
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4152:3: lv_expressions_4_0= ruleStatement
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXBreakableBlockExpressionAccess().getExpressionsStatementParserRuleCall_1_2_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleStatement_in_ruleXBreakableBlockExpression9131);
                    	    lv_expressions_4_0=ruleStatement();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXBreakableBlockExpressionRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"expressions",
                    	              		lv_expressions_4_0, 
                    	              		"Statement");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop83;
                        }
                    } while (true);

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4168:3: ( ( '}' )=>otherlv_5= '}' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4168:4: ( '}' )=>otherlv_5= '}'
                    {
                    otherlv_5=(Token)match(input,27,FOLLOW_27_in_ruleXBreakableBlockExpression9152); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getXBreakableBlockExpressionAccess().getRightCurlyBracketKeyword_1_3());
                          
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXBreakableBlockExpression"


    // $ANTLR start "entryRuleXParenthesizedExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4181:1: entryRuleXParenthesizedExpression returns [EObject current=null] : iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF ;
    public final EObject entryRuleXParenthesizedExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXParenthesizedExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4182:2: (iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4183:2: iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXParenthesizedExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXParenthesizedExpression_in_entryRuleXParenthesizedExpression9190);
            iv_ruleXParenthesizedExpression=ruleXParenthesizedExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXParenthesizedExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXParenthesizedExpression9200); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXParenthesizedExpression"


    // $ANTLR start "ruleXParenthesizedExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4190:1: ruleXParenthesizedExpression returns [EObject current=null] : ( () otherlv_1= '(' ( (lv_exp_2_0= ruleXNameExpression ) ) (otherlv_3= ',' ( (lv_exp_4_0= ruleXNameExpression ) ) )* otherlv_5= ')' ) ;
    public final EObject ruleXParenthesizedExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_exp_2_0 = null;

        EObject lv_exp_4_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4193:28: ( ( () otherlv_1= '(' ( (lv_exp_2_0= ruleXNameExpression ) ) (otherlv_3= ',' ( (lv_exp_4_0= ruleXNameExpression ) ) )* otherlv_5= ')' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4194:1: ( () otherlv_1= '(' ( (lv_exp_2_0= ruleXNameExpression ) ) (otherlv_3= ',' ( (lv_exp_4_0= ruleXNameExpression ) ) )* otherlv_5= ')' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4194:1: ( () otherlv_1= '(' ( (lv_exp_2_0= ruleXNameExpression ) ) (otherlv_3= ',' ( (lv_exp_4_0= ruleXNameExpression ) ) )* otherlv_5= ')' )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4194:2: () otherlv_1= '(' ( (lv_exp_2_0= ruleXNameExpression ) ) (otherlv_3= ',' ( (lv_exp_4_0= ruleXNameExpression ) ) )* otherlv_5= ')'
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4194:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4195:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXParenthesizedExpressionAccess().getXParenthesizedExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,17,FOLLOW_17_in_ruleXParenthesizedExpression9246); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_1());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4204:1: ( (lv_exp_2_0= ruleXNameExpression ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4205:1: (lv_exp_2_0= ruleXNameExpression )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4205:1: (lv_exp_2_0= ruleXNameExpression )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4206:3: lv_exp_2_0= ruleXNameExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXParenthesizedExpressionAccess().getExpXNameExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXNameExpression_in_ruleXParenthesizedExpression9267);
            lv_exp_2_0=ruleXNameExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXParenthesizedExpressionRule());
              	        }
                     		add(
                     			current, 
                     			"exp",
                      		lv_exp_2_0, 
                      		"XNameExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4222:2: (otherlv_3= ',' ( (lv_exp_4_0= ruleXNameExpression ) ) )*
            loop85:
            do {
                int alt85=2;
                int LA85_0 = input.LA(1);

                if ( (LA85_0==18) ) {
                    alt85=1;
                }


                switch (alt85) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4222:4: otherlv_3= ',' ( (lv_exp_4_0= ruleXNameExpression ) )
            	    {
            	    otherlv_3=(Token)match(input,18,FOLLOW_18_in_ruleXParenthesizedExpression9280); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_3, grammarAccess.getXParenthesizedExpressionAccess().getCommaKeyword_3_0());
            	          
            	    }
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4226:1: ( (lv_exp_4_0= ruleXNameExpression ) )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4227:1: (lv_exp_4_0= ruleXNameExpression )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4227:1: (lv_exp_4_0= ruleXNameExpression )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4228:3: lv_exp_4_0= ruleXNameExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXParenthesizedExpressionAccess().getExpXNameExpressionParserRuleCall_3_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXNameExpression_in_ruleXParenthesizedExpression9301);
            	    lv_exp_4_0=ruleXNameExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXParenthesizedExpressionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"exp",
            	              		lv_exp_4_0, 
            	              		"XNameExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop85;
                }
            } while (true);

            otherlv_5=(Token)match(input,19,FOLLOW_19_in_ruleXParenthesizedExpression9315); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXParenthesizedExpression"


    // $ANTLR start "entryRuleXNameExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4256:1: entryRuleXNameExpression returns [EObject current=null] : iv_ruleXNameExpression= ruleXNameExpression EOF ;
    public final EObject entryRuleXNameExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXNameExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4257:2: (iv_ruleXNameExpression= ruleXNameExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4258:2: iv_ruleXNameExpression= ruleXNameExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXNameExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXNameExpression_in_entryRuleXNameExpression9351);
            iv_ruleXNameExpression=ruleXNameExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXNameExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXNameExpression9361); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXNameExpression"


    // $ANTLR start "ruleXNameExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4265:1: ruleXNameExpression returns [EObject current=null] : ( ( () ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_value_3_0= ruleXExpression ) ) ) | this_XExpression_4= ruleXExpression ) ;
    public final EObject ruleXNameExpression() throws RecognitionException {
        EObject current = null;

        Token lv_name_1_0=null;
        Token otherlv_2=null;
        EObject lv_value_3_0 = null;

        EObject this_XExpression_4 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4268:28: ( ( ( () ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_value_3_0= ruleXExpression ) ) ) | this_XExpression_4= ruleXExpression ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4269:1: ( ( () ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_value_3_0= ruleXExpression ) ) ) | this_XExpression_4= ruleXExpression )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4269:1: ( ( () ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_value_3_0= ruleXExpression ) ) ) | this_XExpression_4= ruleXExpression )
            int alt86=2;
            int LA86_0 = input.LA(1);

            if ( (LA86_0==RULE_ID) ) {
                int LA86_1 = input.LA(2);

                if ( (LA86_1==31) ) {
                    alt86=1;
                }
                else if ( (LA86_1==EOF||(LA86_1>=17 && LA86_1<=19)||(LA86_1>=22 && LA86_1<=23)||LA86_1==34||LA86_1==36||LA86_1==39||(LA86_1>=44 && LA86_1<=64)||(LA86_1>=66 && LA86_1<=69)||LA86_1==80||LA86_1==92) ) {
                    alt86=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 86, 1, input);

                    throw nvae;
                }
            }
            else if ( ((LA86_0>=RULE_STRING && LA86_0<=RULE_VERBATIM_STRING)||LA86_0==17||LA86_0==34||LA86_0==42||LA86_0==56||LA86_0==65||(LA86_0>=70 && LA86_0<=73)||LA86_0==79||(LA86_0>=81 && LA86_0<=88)||(LA86_0>=90 && LA86_0<=91)) ) {
                alt86=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 86, 0, input);

                throw nvae;
            }
            switch (alt86) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4269:2: ( () ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_value_3_0= ruleXExpression ) ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4269:2: ( () ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_value_3_0= ruleXExpression ) ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4269:3: () ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_value_3_0= ruleXExpression ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4269:3: ()
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4270:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getXNameExpressionAccess().getXNameExpressionAction_0_0(),
                                  current);
                          
                    }

                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4275:2: ( (lv_name_1_0= RULE_ID ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4276:1: (lv_name_1_0= RULE_ID )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4276:1: (lv_name_1_0= RULE_ID )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4277:3: lv_name_1_0= RULE_ID
                    {
                    lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleXNameExpression9413); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_1_0, grammarAccess.getXNameExpressionAccess().getNameIDTerminalRuleCall_0_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXNameExpressionRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_1_0, 
                              		"ID");
                      	    
                    }

                    }


                    }

                    otherlv_2=(Token)match(input,31,FOLLOW_31_in_ruleXNameExpression9430); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getXNameExpressionAccess().getColonKeyword_0_2());
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4297:1: ( (lv_value_3_0= ruleXExpression ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4298:1: (lv_value_3_0= ruleXExpression )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4298:1: (lv_value_3_0= ruleXExpression )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4299:3: lv_value_3_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXNameExpressionAccess().getValueXExpressionParserRuleCall_0_3_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXNameExpression9451);
                    lv_value_3_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXNameExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_3_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4317:5: this_XExpression_4= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXNameExpressionAccess().getXExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXNameExpression9480);
                    this_XExpression_4=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XExpression_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXNameExpression"


    // $ANTLR start "entryRuleXFeatureCall"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4333:1: entryRuleXFeatureCall returns [EObject current=null] : iv_ruleXFeatureCall= ruleXFeatureCall EOF ;
    public final EObject entryRuleXFeatureCall() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXFeatureCall = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4334:2: (iv_ruleXFeatureCall= ruleXFeatureCall EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4335:2: iv_ruleXFeatureCall= ruleXFeatureCall EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXFeatureCallRule()); 
            }
            pushFollow(FOLLOW_ruleXFeatureCall_in_entryRuleXFeatureCall9515);
            iv_ruleXFeatureCall=ruleXFeatureCall();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXFeatureCall; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXFeatureCall9525); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXFeatureCall"


    // $ANTLR start "ruleXFeatureCall"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4342:1: ruleXFeatureCall returns [EObject current=null] : ( () ( (lv_feature_1_0= ruleQualifiedName ) ) ( ( ( '?' ) )=> (lv_nullSafe_2_0= '?' ) )? ( ( ( ( ( '(' ) )=> (lv_operatorCall_3_0= '(' ) ) ( ( (lv_params_4_0= ruleCallParameter ) ) (otherlv_5= ',' ( (lv_params_6_0= ruleCallParameter ) ) )* )? otherlv_7= ')' ) | ( ( ( ( '[' ) )=> (lv_indexCall_8_0= '[' ) ) ( ( (lv_params_9_0= ruleCallParameter ) ) (otherlv_10= ',' ( (lv_params_11_0= ruleCallParameter ) ) )* )? otherlv_12= ']' ) )? ) ;
    public final EObject ruleXFeatureCall() throws RecognitionException {
        EObject current = null;

        Token lv_nullSafe_2_0=null;
        Token lv_operatorCall_3_0=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token lv_indexCall_8_0=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        AntlrDatatypeRuleToken lv_feature_1_0 = null;

        EObject lv_params_4_0 = null;

        EObject lv_params_6_0 = null;

        EObject lv_params_9_0 = null;

        EObject lv_params_11_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4345:28: ( ( () ( (lv_feature_1_0= ruleQualifiedName ) ) ( ( ( '?' ) )=> (lv_nullSafe_2_0= '?' ) )? ( ( ( ( ( '(' ) )=> (lv_operatorCall_3_0= '(' ) ) ( ( (lv_params_4_0= ruleCallParameter ) ) (otherlv_5= ',' ( (lv_params_6_0= ruleCallParameter ) ) )* )? otherlv_7= ')' ) | ( ( ( ( '[' ) )=> (lv_indexCall_8_0= '[' ) ) ( ( (lv_params_9_0= ruleCallParameter ) ) (otherlv_10= ',' ( (lv_params_11_0= ruleCallParameter ) ) )* )? otherlv_12= ']' ) )? ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4346:1: ( () ( (lv_feature_1_0= ruleQualifiedName ) ) ( ( ( '?' ) )=> (lv_nullSafe_2_0= '?' ) )? ( ( ( ( ( '(' ) )=> (lv_operatorCall_3_0= '(' ) ) ( ( (lv_params_4_0= ruleCallParameter ) ) (otherlv_5= ',' ( (lv_params_6_0= ruleCallParameter ) ) )* )? otherlv_7= ')' ) | ( ( ( ( '[' ) )=> (lv_indexCall_8_0= '[' ) ) ( ( (lv_params_9_0= ruleCallParameter ) ) (otherlv_10= ',' ( (lv_params_11_0= ruleCallParameter ) ) )* )? otherlv_12= ']' ) )? )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4346:1: ( () ( (lv_feature_1_0= ruleQualifiedName ) ) ( ( ( '?' ) )=> (lv_nullSafe_2_0= '?' ) )? ( ( ( ( ( '(' ) )=> (lv_operatorCall_3_0= '(' ) ) ( ( (lv_params_4_0= ruleCallParameter ) ) (otherlv_5= ',' ( (lv_params_6_0= ruleCallParameter ) ) )* )? otherlv_7= ')' ) | ( ( ( ( '[' ) )=> (lv_indexCall_8_0= '[' ) ) ( ( (lv_params_9_0= ruleCallParameter ) ) (otherlv_10= ',' ( (lv_params_11_0= ruleCallParameter ) ) )* )? otherlv_12= ']' ) )? )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4346:2: () ( (lv_feature_1_0= ruleQualifiedName ) ) ( ( ( '?' ) )=> (lv_nullSafe_2_0= '?' ) )? ( ( ( ( ( '(' ) )=> (lv_operatorCall_3_0= '(' ) ) ( ( (lv_params_4_0= ruleCallParameter ) ) (otherlv_5= ',' ( (lv_params_6_0= ruleCallParameter ) ) )* )? otherlv_7= ')' ) | ( ( ( ( '[' ) )=> (lv_indexCall_8_0= '[' ) ) ( ( (lv_params_9_0= ruleCallParameter ) ) (otherlv_10= ',' ( (lv_params_11_0= ruleCallParameter ) ) )* )? otherlv_12= ']' ) )?
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4346:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4347:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4352:2: ( (lv_feature_1_0= ruleQualifiedName ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4353:1: (lv_feature_1_0= ruleQualifiedName )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4353:1: (lv_feature_1_0= ruleQualifiedName )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4354:3: lv_feature_1_0= ruleQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureQualifiedNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleXFeatureCall9580);
            lv_feature_1_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
              	        }
                     		set(
                     			current, 
                     			"feature",
                      		lv_feature_1_0, 
                      		"QualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4370:2: ( ( ( '?' ) )=> (lv_nullSafe_2_0= '?' ) )?
            int alt87=2;
            int LA87_0 = input.LA(1);

            if ( (LA87_0==80) && (synpred21_InternalUnicornDSL())) {
                alt87=1;
            }
            switch (alt87) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4370:3: ( ( '?' ) )=> (lv_nullSafe_2_0= '?' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4377:1: (lv_nullSafe_2_0= '?' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4378:3: lv_nullSafe_2_0= '?'
                    {
                    lv_nullSafe_2_0=(Token)match(input,80,FOLLOW_80_in_ruleXFeatureCall9613); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_nullSafe_2_0, grammarAccess.getXFeatureCallAccess().getNullSafeQuestionMarkKeyword_2_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXFeatureCallRule());
                      	        }
                             		setWithLastConsumed(current, "nullSafe", true, "?");
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4391:3: ( ( ( ( ( '(' ) )=> (lv_operatorCall_3_0= '(' ) ) ( ( (lv_params_4_0= ruleCallParameter ) ) (otherlv_5= ',' ( (lv_params_6_0= ruleCallParameter ) ) )* )? otherlv_7= ')' ) | ( ( ( ( '[' ) )=> (lv_indexCall_8_0= '[' ) ) ( ( (lv_params_9_0= ruleCallParameter ) ) (otherlv_10= ',' ( (lv_params_11_0= ruleCallParameter ) ) )* )? otherlv_12= ']' ) )?
            int alt92=3;
            alt92 = dfa92.predict(input);
            switch (alt92) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4391:4: ( ( ( ( '(' ) )=> (lv_operatorCall_3_0= '(' ) ) ( ( (lv_params_4_0= ruleCallParameter ) ) (otherlv_5= ',' ( (lv_params_6_0= ruleCallParameter ) ) )* )? otherlv_7= ')' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4391:4: ( ( ( ( '(' ) )=> (lv_operatorCall_3_0= '(' ) ) ( ( (lv_params_4_0= ruleCallParameter ) ) (otherlv_5= ',' ( (lv_params_6_0= ruleCallParameter ) ) )* )? otherlv_7= ')' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4391:5: ( ( ( '(' ) )=> (lv_operatorCall_3_0= '(' ) ) ( ( (lv_params_4_0= ruleCallParameter ) ) (otherlv_5= ',' ( (lv_params_6_0= ruleCallParameter ) ) )* )? otherlv_7= ')'
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4391:5: ( ( ( '(' ) )=> (lv_operatorCall_3_0= '(' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4391:6: ( ( '(' ) )=> (lv_operatorCall_3_0= '(' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4398:1: (lv_operatorCall_3_0= '(' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4399:3: lv_operatorCall_3_0= '('
                    {
                    lv_operatorCall_3_0=(Token)match(input,17,FOLLOW_17_in_ruleXFeatureCall9662); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_operatorCall_3_0, grammarAccess.getXFeatureCallAccess().getOperatorCallLeftParenthesisKeyword_3_0_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXFeatureCallRule());
                      	        }
                             		setWithLastConsumed(current, "operatorCall", true, "(");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4412:2: ( ( (lv_params_4_0= ruleCallParameter ) ) (otherlv_5= ',' ( (lv_params_6_0= ruleCallParameter ) ) )* )?
                    int alt89=2;
                    int LA89_0 = input.LA(1);

                    if ( ((LA89_0>=RULE_ID && LA89_0<=RULE_VERBATIM_STRING)||LA89_0==17||LA89_0==34||(LA89_0>=42 && LA89_0<=43)||LA89_0==56||LA89_0==65||(LA89_0>=70 && LA89_0<=73)||(LA89_0>=81 && LA89_0<=88)||(LA89_0>=90 && LA89_0<=91)) ) {
                        alt89=1;
                    }
                    switch (alt89) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4412:3: ( (lv_params_4_0= ruleCallParameter ) ) (otherlv_5= ',' ( (lv_params_6_0= ruleCallParameter ) ) )*
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4412:3: ( (lv_params_4_0= ruleCallParameter ) )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4413:1: (lv_params_4_0= ruleCallParameter )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4413:1: (lv_params_4_0= ruleCallParameter )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4414:3: lv_params_4_0= ruleCallParameter
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getParamsCallParameterParserRuleCall_3_0_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleCallParameter_in_ruleXFeatureCall9697);
                            lv_params_4_0=ruleCallParameter();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"params",
                                      		lv_params_4_0, 
                                      		"CallParameter");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4430:2: (otherlv_5= ',' ( (lv_params_6_0= ruleCallParameter ) ) )*
                            loop88:
                            do {
                                int alt88=2;
                                int LA88_0 = input.LA(1);

                                if ( (LA88_0==18) ) {
                                    alt88=1;
                                }


                                switch (alt88) {
                            	case 1 :
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4430:4: otherlv_5= ',' ( (lv_params_6_0= ruleCallParameter ) )
                            	    {
                            	    otherlv_5=(Token)match(input,18,FOLLOW_18_in_ruleXFeatureCall9710); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_5, grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_0_1_1_0());
                            	          
                            	    }
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4434:1: ( (lv_params_6_0= ruleCallParameter ) )
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4435:1: (lv_params_6_0= ruleCallParameter )
                            	    {
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4435:1: (lv_params_6_0= ruleCallParameter )
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4436:3: lv_params_6_0= ruleCallParameter
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getParamsCallParameterParserRuleCall_3_0_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleCallParameter_in_ruleXFeatureCall9731);
                            	    lv_params_6_0=ruleCallParameter();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"params",
                            	              		lv_params_6_0, 
                            	              		"CallParameter");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop88;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_7=(Token)match(input,19,FOLLOW_19_in_ruleXFeatureCall9747); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_0_2());
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4457:6: ( ( ( ( '[' ) )=> (lv_indexCall_8_0= '[' ) ) ( ( (lv_params_9_0= ruleCallParameter ) ) (otherlv_10= ',' ( (lv_params_11_0= ruleCallParameter ) ) )* )? otherlv_12= ']' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4457:6: ( ( ( ( '[' ) )=> (lv_indexCall_8_0= '[' ) ) ( ( (lv_params_9_0= ruleCallParameter ) ) (otherlv_10= ',' ( (lv_params_11_0= ruleCallParameter ) ) )* )? otherlv_12= ']' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4457:7: ( ( ( '[' ) )=> (lv_indexCall_8_0= '[' ) ) ( ( (lv_params_9_0= ruleCallParameter ) ) (otherlv_10= ',' ( (lv_params_11_0= ruleCallParameter ) ) )* )? otherlv_12= ']'
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4457:7: ( ( ( '[' ) )=> (lv_indexCall_8_0= '[' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4457:8: ( ( '[' ) )=> (lv_indexCall_8_0= '[' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4464:1: (lv_indexCall_8_0= '[' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4465:3: lv_indexCall_8_0= '['
                    {
                    lv_indexCall_8_0=(Token)match(input,34,FOLLOW_34_in_ruleXFeatureCall9788); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_indexCall_8_0, grammarAccess.getXFeatureCallAccess().getIndexCallLeftSquareBracketKeyword_3_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXFeatureCallRule());
                      	        }
                             		setWithLastConsumed(current, "indexCall", true, "[");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4478:2: ( ( (lv_params_9_0= ruleCallParameter ) ) (otherlv_10= ',' ( (lv_params_11_0= ruleCallParameter ) ) )* )?
                    int alt91=2;
                    int LA91_0 = input.LA(1);

                    if ( ((LA91_0>=RULE_ID && LA91_0<=RULE_VERBATIM_STRING)||LA91_0==17||LA91_0==34||(LA91_0>=42 && LA91_0<=43)||LA91_0==56||LA91_0==65||(LA91_0>=70 && LA91_0<=73)||(LA91_0>=81 && LA91_0<=88)||(LA91_0>=90 && LA91_0<=91)) ) {
                        alt91=1;
                    }
                    switch (alt91) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4478:3: ( (lv_params_9_0= ruleCallParameter ) ) (otherlv_10= ',' ( (lv_params_11_0= ruleCallParameter ) ) )*
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4478:3: ( (lv_params_9_0= ruleCallParameter ) )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4479:1: (lv_params_9_0= ruleCallParameter )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4479:1: (lv_params_9_0= ruleCallParameter )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4480:3: lv_params_9_0= ruleCallParameter
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getParamsCallParameterParserRuleCall_3_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleCallParameter_in_ruleXFeatureCall9823);
                            lv_params_9_0=ruleCallParameter();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"params",
                                      		lv_params_9_0, 
                                      		"CallParameter");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4496:2: (otherlv_10= ',' ( (lv_params_11_0= ruleCallParameter ) ) )*
                            loop90:
                            do {
                                int alt90=2;
                                int LA90_0 = input.LA(1);

                                if ( (LA90_0==18) ) {
                                    alt90=1;
                                }


                                switch (alt90) {
                            	case 1 :
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4496:4: otherlv_10= ',' ( (lv_params_11_0= ruleCallParameter ) )
                            	    {
                            	    otherlv_10=(Token)match(input,18,FOLLOW_18_in_ruleXFeatureCall9836); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_10, grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0());
                            	          
                            	    }
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4500:1: ( (lv_params_11_0= ruleCallParameter ) )
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4501:1: (lv_params_11_0= ruleCallParameter )
                            	    {
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4501:1: (lv_params_11_0= ruleCallParameter )
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4502:3: lv_params_11_0= ruleCallParameter
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getParamsCallParameterParserRuleCall_3_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleCallParameter_in_ruleXFeatureCall9857);
                            	    lv_params_11_0=ruleCallParameter();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"params",
                            	              		lv_params_11_0, 
                            	              		"CallParameter");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop90;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_12=(Token)match(input,35,FOLLOW_35_in_ruleXFeatureCall9873); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_12, grammarAccess.getXFeatureCallAccess().getRightSquareBracketKeyword_3_1_2());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXFeatureCall"


    // $ANTLR start "entryRuleXIdentifiedElementFeatureCall"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4530:1: entryRuleXIdentifiedElementFeatureCall returns [EObject current=null] : iv_ruleXIdentifiedElementFeatureCall= ruleXIdentifiedElementFeatureCall EOF ;
    public final EObject entryRuleXIdentifiedElementFeatureCall() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXIdentifiedElementFeatureCall = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4531:2: (iv_ruleXIdentifiedElementFeatureCall= ruleXIdentifiedElementFeatureCall EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4532:2: iv_ruleXIdentifiedElementFeatureCall= ruleXIdentifiedElementFeatureCall EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXIdentifiedElementFeatureCallRule()); 
            }
            pushFollow(FOLLOW_ruleXIdentifiedElementFeatureCall_in_entryRuleXIdentifiedElementFeatureCall9912);
            iv_ruleXIdentifiedElementFeatureCall=ruleXIdentifiedElementFeatureCall();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXIdentifiedElementFeatureCall; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXIdentifiedElementFeatureCall9922); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXIdentifiedElementFeatureCall"


    // $ANTLR start "ruleXIdentifiedElementFeatureCall"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4539:1: ruleXIdentifiedElementFeatureCall returns [EObject current=null] : ( () ( ( ( ruleQualifiedName ) ) | ( ( (lv_feature_2_1= 'this' | lv_feature_2_2= '__args' ) ) ) ) ( (lv_nullSafe_3_0= '?' ) )? ( ( ( ( ( '(' ) )=> (lv_operatorCall_4_0= '(' ) ) ( ( (lv_params_5_0= ruleCallParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleCallParameter ) ) )* )? otherlv_8= ')' ) | ( ( ( ( '[' ) )=> (lv_indexCall_9_0= '[' ) ) ( ( (lv_params_10_0= ruleCallParameter ) ) (otherlv_11= ',' ( (lv_params_12_0= ruleCallParameter ) ) )* )? otherlv_13= ']' ) )? ) ;
    public final EObject ruleXIdentifiedElementFeatureCall() throws RecognitionException {
        EObject current = null;

        Token lv_feature_2_1=null;
        Token lv_feature_2_2=null;
        Token lv_nullSafe_3_0=null;
        Token lv_operatorCall_4_0=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token lv_indexCall_9_0=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        EObject lv_params_5_0 = null;

        EObject lv_params_7_0 = null;

        EObject lv_params_10_0 = null;

        EObject lv_params_12_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4542:28: ( ( () ( ( ( ruleQualifiedName ) ) | ( ( (lv_feature_2_1= 'this' | lv_feature_2_2= '__args' ) ) ) ) ( (lv_nullSafe_3_0= '?' ) )? ( ( ( ( ( '(' ) )=> (lv_operatorCall_4_0= '(' ) ) ( ( (lv_params_5_0= ruleCallParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleCallParameter ) ) )* )? otherlv_8= ')' ) | ( ( ( ( '[' ) )=> (lv_indexCall_9_0= '[' ) ) ( ( (lv_params_10_0= ruleCallParameter ) ) (otherlv_11= ',' ( (lv_params_12_0= ruleCallParameter ) ) )* )? otherlv_13= ']' ) )? ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4543:1: ( () ( ( ( ruleQualifiedName ) ) | ( ( (lv_feature_2_1= 'this' | lv_feature_2_2= '__args' ) ) ) ) ( (lv_nullSafe_3_0= '?' ) )? ( ( ( ( ( '(' ) )=> (lv_operatorCall_4_0= '(' ) ) ( ( (lv_params_5_0= ruleCallParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleCallParameter ) ) )* )? otherlv_8= ')' ) | ( ( ( ( '[' ) )=> (lv_indexCall_9_0= '[' ) ) ( ( (lv_params_10_0= ruleCallParameter ) ) (otherlv_11= ',' ( (lv_params_12_0= ruleCallParameter ) ) )* )? otherlv_13= ']' ) )? )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4543:1: ( () ( ( ( ruleQualifiedName ) ) | ( ( (lv_feature_2_1= 'this' | lv_feature_2_2= '__args' ) ) ) ) ( (lv_nullSafe_3_0= '?' ) )? ( ( ( ( ( '(' ) )=> (lv_operatorCall_4_0= '(' ) ) ( ( (lv_params_5_0= ruleCallParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleCallParameter ) ) )* )? otherlv_8= ')' ) | ( ( ( ( '[' ) )=> (lv_indexCall_9_0= '[' ) ) ( ( (lv_params_10_0= ruleCallParameter ) ) (otherlv_11= ',' ( (lv_params_12_0= ruleCallParameter ) ) )* )? otherlv_13= ']' ) )? )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4543:2: () ( ( ( ruleQualifiedName ) ) | ( ( (lv_feature_2_1= 'this' | lv_feature_2_2= '__args' ) ) ) ) ( (lv_nullSafe_3_0= '?' ) )? ( ( ( ( ( '(' ) )=> (lv_operatorCall_4_0= '(' ) ) ( ( (lv_params_5_0= ruleCallParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleCallParameter ) ) )* )? otherlv_8= ')' ) | ( ( ( ( '[' ) )=> (lv_indexCall_9_0= '[' ) ) ( ( (lv_params_10_0= ruleCallParameter ) ) (otherlv_11= ',' ( (lv_params_12_0= ruleCallParameter ) ) )* )? otherlv_13= ']' ) )?
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4543:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4544:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXIdentifiedElementFeatureCallAccess().getXFeatureCallAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4549:2: ( ( ( ruleQualifiedName ) ) | ( ( (lv_feature_2_1= 'this' | lv_feature_2_2= '__args' ) ) ) )
            int alt94=2;
            int LA94_0 = input.LA(1);

            if ( (LA94_0==RULE_ID) ) {
                alt94=1;
            }
            else if ( ((LA94_0>=81 && LA94_0<=82)) ) {
                alt94=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 94, 0, input);

                throw nvae;
            }
            switch (alt94) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4549:3: ( ( ruleQualifiedName ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4549:3: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4550:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4550:1: ( ruleQualifiedName )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4551:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXIdentifiedElementFeatureCallRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXIdentifiedElementFeatureCallAccess().getFeatureElementIdentifiedElementCrossReference_1_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleXIdentifiedElementFeatureCall9980);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4565:6: ( ( (lv_feature_2_1= 'this' | lv_feature_2_2= '__args' ) ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4565:6: ( ( (lv_feature_2_1= 'this' | lv_feature_2_2= '__args' ) ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4566:1: ( (lv_feature_2_1= 'this' | lv_feature_2_2= '__args' ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4566:1: ( (lv_feature_2_1= 'this' | lv_feature_2_2= '__args' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4567:1: (lv_feature_2_1= 'this' | lv_feature_2_2= '__args' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4567:1: (lv_feature_2_1= 'this' | lv_feature_2_2= '__args' )
                    int alt93=2;
                    int LA93_0 = input.LA(1);

                    if ( (LA93_0==81) ) {
                        alt93=1;
                    }
                    else if ( (LA93_0==82) ) {
                        alt93=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 93, 0, input);

                        throw nvae;
                    }
                    switch (alt93) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4568:3: lv_feature_2_1= 'this'
                            {
                            lv_feature_2_1=(Token)match(input,81,FOLLOW_81_in_ruleXIdentifiedElementFeatureCall10006); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_feature_2_1, grammarAccess.getXIdentifiedElementFeatureCallAccess().getFeatureThisKeyword_1_1_0_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getXIdentifiedElementFeatureCallRule());
                              	        }
                                     		setWithLastConsumed(current, "feature", lv_feature_2_1, null);
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4580:8: lv_feature_2_2= '__args'
                            {
                            lv_feature_2_2=(Token)match(input,82,FOLLOW_82_in_ruleXIdentifiedElementFeatureCall10035); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_feature_2_2, grammarAccess.getXIdentifiedElementFeatureCallAccess().getFeature__argsKeyword_1_1_0_1());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getXIdentifiedElementFeatureCallRule());
                              	        }
                                     		setWithLastConsumed(current, "feature", lv_feature_2_2, null);
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4595:3: ( (lv_nullSafe_3_0= '?' ) )?
            int alt95=2;
            int LA95_0 = input.LA(1);

            if ( (LA95_0==80) ) {
                alt95=1;
            }
            switch (alt95) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4596:1: (lv_nullSafe_3_0= '?' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4596:1: (lv_nullSafe_3_0= '?' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4597:3: lv_nullSafe_3_0= '?'
                    {
                    lv_nullSafe_3_0=(Token)match(input,80,FOLLOW_80_in_ruleXIdentifiedElementFeatureCall10070); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_nullSafe_3_0, grammarAccess.getXIdentifiedElementFeatureCallAccess().getNullSafeQuestionMarkKeyword_2_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXIdentifiedElementFeatureCallRule());
                      	        }
                             		setWithLastConsumed(current, "nullSafe", true, "?");
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4610:3: ( ( ( ( ( '(' ) )=> (lv_operatorCall_4_0= '(' ) ) ( ( (lv_params_5_0= ruleCallParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleCallParameter ) ) )* )? otherlv_8= ')' ) | ( ( ( ( '[' ) )=> (lv_indexCall_9_0= '[' ) ) ( ( (lv_params_10_0= ruleCallParameter ) ) (otherlv_11= ',' ( (lv_params_12_0= ruleCallParameter ) ) )* )? otherlv_13= ']' ) )?
            int alt100=3;
            alt100 = dfa100.predict(input);
            switch (alt100) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4610:4: ( ( ( ( '(' ) )=> (lv_operatorCall_4_0= '(' ) ) ( ( (lv_params_5_0= ruleCallParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleCallParameter ) ) )* )? otherlv_8= ')' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4610:4: ( ( ( ( '(' ) )=> (lv_operatorCall_4_0= '(' ) ) ( ( (lv_params_5_0= ruleCallParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleCallParameter ) ) )* )? otherlv_8= ')' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4610:5: ( ( ( '(' ) )=> (lv_operatorCall_4_0= '(' ) ) ( ( (lv_params_5_0= ruleCallParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleCallParameter ) ) )* )? otherlv_8= ')'
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4610:5: ( ( ( '(' ) )=> (lv_operatorCall_4_0= '(' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4610:6: ( ( '(' ) )=> (lv_operatorCall_4_0= '(' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4617:1: (lv_operatorCall_4_0= '(' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4618:3: lv_operatorCall_4_0= '('
                    {
                    lv_operatorCall_4_0=(Token)match(input,17,FOLLOW_17_in_ruleXIdentifiedElementFeatureCall10119); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_operatorCall_4_0, grammarAccess.getXIdentifiedElementFeatureCallAccess().getOperatorCallLeftParenthesisKeyword_3_0_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXIdentifiedElementFeatureCallRule());
                      	        }
                             		setWithLastConsumed(current, "operatorCall", true, "(");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4631:2: ( ( (lv_params_5_0= ruleCallParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleCallParameter ) ) )* )?
                    int alt97=2;
                    int LA97_0 = input.LA(1);

                    if ( ((LA97_0>=RULE_ID && LA97_0<=RULE_VERBATIM_STRING)||LA97_0==17||LA97_0==34||(LA97_0>=42 && LA97_0<=43)||LA97_0==56||LA97_0==65||(LA97_0>=70 && LA97_0<=73)||(LA97_0>=81 && LA97_0<=88)||(LA97_0>=90 && LA97_0<=91)) ) {
                        alt97=1;
                    }
                    switch (alt97) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4631:3: ( (lv_params_5_0= ruleCallParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleCallParameter ) ) )*
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4631:3: ( (lv_params_5_0= ruleCallParameter ) )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4632:1: (lv_params_5_0= ruleCallParameter )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4632:1: (lv_params_5_0= ruleCallParameter )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4633:3: lv_params_5_0= ruleCallParameter
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXIdentifiedElementFeatureCallAccess().getParamsCallParameterParserRuleCall_3_0_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleCallParameter_in_ruleXIdentifiedElementFeatureCall10154);
                            lv_params_5_0=ruleCallParameter();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXIdentifiedElementFeatureCallRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"params",
                                      		lv_params_5_0, 
                                      		"CallParameter");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4649:2: (otherlv_6= ',' ( (lv_params_7_0= ruleCallParameter ) ) )*
                            loop96:
                            do {
                                int alt96=2;
                                int LA96_0 = input.LA(1);

                                if ( (LA96_0==18) ) {
                                    alt96=1;
                                }


                                switch (alt96) {
                            	case 1 :
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4649:4: otherlv_6= ',' ( (lv_params_7_0= ruleCallParameter ) )
                            	    {
                            	    otherlv_6=(Token)match(input,18,FOLLOW_18_in_ruleXIdentifiedElementFeatureCall10167); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_6, grammarAccess.getXIdentifiedElementFeatureCallAccess().getCommaKeyword_3_0_1_1_0());
                            	          
                            	    }
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4653:1: ( (lv_params_7_0= ruleCallParameter ) )
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4654:1: (lv_params_7_0= ruleCallParameter )
                            	    {
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4654:1: (lv_params_7_0= ruleCallParameter )
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4655:3: lv_params_7_0= ruleCallParameter
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getXIdentifiedElementFeatureCallAccess().getParamsCallParameterParserRuleCall_3_0_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleCallParameter_in_ruleXIdentifiedElementFeatureCall10188);
                            	    lv_params_7_0=ruleCallParameter();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getXIdentifiedElementFeatureCallRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"params",
                            	              		lv_params_7_0, 
                            	              		"CallParameter");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop96;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_8=(Token)match(input,19,FOLLOW_19_in_ruleXIdentifiedElementFeatureCall10204); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_8, grammarAccess.getXIdentifiedElementFeatureCallAccess().getRightParenthesisKeyword_3_0_2());
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4676:6: ( ( ( ( '[' ) )=> (lv_indexCall_9_0= '[' ) ) ( ( (lv_params_10_0= ruleCallParameter ) ) (otherlv_11= ',' ( (lv_params_12_0= ruleCallParameter ) ) )* )? otherlv_13= ']' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4676:6: ( ( ( ( '[' ) )=> (lv_indexCall_9_0= '[' ) ) ( ( (lv_params_10_0= ruleCallParameter ) ) (otherlv_11= ',' ( (lv_params_12_0= ruleCallParameter ) ) )* )? otherlv_13= ']' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4676:7: ( ( ( '[' ) )=> (lv_indexCall_9_0= '[' ) ) ( ( (lv_params_10_0= ruleCallParameter ) ) (otherlv_11= ',' ( (lv_params_12_0= ruleCallParameter ) ) )* )? otherlv_13= ']'
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4676:7: ( ( ( '[' ) )=> (lv_indexCall_9_0= '[' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4676:8: ( ( '[' ) )=> (lv_indexCall_9_0= '[' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4683:1: (lv_indexCall_9_0= '[' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4684:3: lv_indexCall_9_0= '['
                    {
                    lv_indexCall_9_0=(Token)match(input,34,FOLLOW_34_in_ruleXIdentifiedElementFeatureCall10245); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_indexCall_9_0, grammarAccess.getXIdentifiedElementFeatureCallAccess().getIndexCallLeftSquareBracketKeyword_3_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXIdentifiedElementFeatureCallRule());
                      	        }
                             		setWithLastConsumed(current, "indexCall", true, "[");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4697:2: ( ( (lv_params_10_0= ruleCallParameter ) ) (otherlv_11= ',' ( (lv_params_12_0= ruleCallParameter ) ) )* )?
                    int alt99=2;
                    int LA99_0 = input.LA(1);

                    if ( ((LA99_0>=RULE_ID && LA99_0<=RULE_VERBATIM_STRING)||LA99_0==17||LA99_0==34||(LA99_0>=42 && LA99_0<=43)||LA99_0==56||LA99_0==65||(LA99_0>=70 && LA99_0<=73)||(LA99_0>=81 && LA99_0<=88)||(LA99_0>=90 && LA99_0<=91)) ) {
                        alt99=1;
                    }
                    switch (alt99) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4697:3: ( (lv_params_10_0= ruleCallParameter ) ) (otherlv_11= ',' ( (lv_params_12_0= ruleCallParameter ) ) )*
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4697:3: ( (lv_params_10_0= ruleCallParameter ) )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4698:1: (lv_params_10_0= ruleCallParameter )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4698:1: (lv_params_10_0= ruleCallParameter )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4699:3: lv_params_10_0= ruleCallParameter
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXIdentifiedElementFeatureCallAccess().getParamsCallParameterParserRuleCall_3_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleCallParameter_in_ruleXIdentifiedElementFeatureCall10280);
                            lv_params_10_0=ruleCallParameter();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXIdentifiedElementFeatureCallRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"params",
                                      		lv_params_10_0, 
                                      		"CallParameter");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4715:2: (otherlv_11= ',' ( (lv_params_12_0= ruleCallParameter ) ) )*
                            loop98:
                            do {
                                int alt98=2;
                                int LA98_0 = input.LA(1);

                                if ( (LA98_0==18) ) {
                                    alt98=1;
                                }


                                switch (alt98) {
                            	case 1 :
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4715:4: otherlv_11= ',' ( (lv_params_12_0= ruleCallParameter ) )
                            	    {
                            	    otherlv_11=(Token)match(input,18,FOLLOW_18_in_ruleXIdentifiedElementFeatureCall10293); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_11, grammarAccess.getXIdentifiedElementFeatureCallAccess().getCommaKeyword_3_1_1_1_0());
                            	          
                            	    }
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4719:1: ( (lv_params_12_0= ruleCallParameter ) )
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4720:1: (lv_params_12_0= ruleCallParameter )
                            	    {
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4720:1: (lv_params_12_0= ruleCallParameter )
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4721:3: lv_params_12_0= ruleCallParameter
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getXIdentifiedElementFeatureCallAccess().getParamsCallParameterParserRuleCall_3_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleCallParameter_in_ruleXIdentifiedElementFeatureCall10314);
                            	    lv_params_12_0=ruleCallParameter();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getXIdentifiedElementFeatureCallRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"params",
                            	              		lv_params_12_0, 
                            	              		"CallParameter");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop98;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_13=(Token)match(input,35,FOLLOW_35_in_ruleXIdentifiedElementFeatureCall10330); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_13, grammarAccess.getXIdentifiedElementFeatureCallAccess().getRightSquareBracketKeyword_3_1_2());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXIdentifiedElementFeatureCall"


    // $ANTLR start "entryRuleCallParameter"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4749:1: entryRuleCallParameter returns [EObject current=null] : iv_ruleCallParameter= ruleCallParameter EOF ;
    public final EObject entryRuleCallParameter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCallParameter = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4750:2: (iv_ruleCallParameter= ruleCallParameter EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4751:2: iv_ruleCallParameter= ruleCallParameter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getCallParameterRule()); 
            }
            pushFollow(FOLLOW_ruleCallParameter_in_entryRuleCallParameter10369);
            iv_ruleCallParameter=ruleCallParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCallParameter; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleCallParameter10379); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCallParameter"


    // $ANTLR start "ruleCallParameter"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4758:1: ruleCallParameter returns [EObject current=null] : ( ( ( ( (lv_name_0_0= RULE_ID ) ) ( ( '=' )=>otherlv_1= '=' ) )? ( (lv_value_2_0= ruleXBoolExpression ) ) ) | ( (lv_inheritedParameters_3_0= '...' ) ) ) ;
    public final EObject ruleCallParameter() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token lv_inheritedParameters_3_0=null;
        EObject lv_value_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4761:28: ( ( ( ( ( (lv_name_0_0= RULE_ID ) ) ( ( '=' )=>otherlv_1= '=' ) )? ( (lv_value_2_0= ruleXBoolExpression ) ) ) | ( (lv_inheritedParameters_3_0= '...' ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4762:1: ( ( ( ( (lv_name_0_0= RULE_ID ) ) ( ( '=' )=>otherlv_1= '=' ) )? ( (lv_value_2_0= ruleXBoolExpression ) ) ) | ( (lv_inheritedParameters_3_0= '...' ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4762:1: ( ( ( ( (lv_name_0_0= RULE_ID ) ) ( ( '=' )=>otherlv_1= '=' ) )? ( (lv_value_2_0= ruleXBoolExpression ) ) ) | ( (lv_inheritedParameters_3_0= '...' ) ) )
            int alt102=2;
            int LA102_0 = input.LA(1);

            if ( ((LA102_0>=RULE_ID && LA102_0<=RULE_VERBATIM_STRING)||LA102_0==17||LA102_0==34||LA102_0==42||LA102_0==56||LA102_0==65||(LA102_0>=70 && LA102_0<=73)||(LA102_0>=81 && LA102_0<=88)||(LA102_0>=90 && LA102_0<=91)) ) {
                alt102=1;
            }
            else if ( (LA102_0==43) ) {
                alt102=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 102, 0, input);

                throw nvae;
            }
            switch (alt102) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4762:2: ( ( ( (lv_name_0_0= RULE_ID ) ) ( ( '=' )=>otherlv_1= '=' ) )? ( (lv_value_2_0= ruleXBoolExpression ) ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4762:2: ( ( ( (lv_name_0_0= RULE_ID ) ) ( ( '=' )=>otherlv_1= '=' ) )? ( (lv_value_2_0= ruleXBoolExpression ) ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4762:3: ( ( (lv_name_0_0= RULE_ID ) ) ( ( '=' )=>otherlv_1= '=' ) )? ( (lv_value_2_0= ruleXBoolExpression ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4762:3: ( ( (lv_name_0_0= RULE_ID ) ) ( ( '=' )=>otherlv_1= '=' ) )?
                    int alt101=2;
                    int LA101_0 = input.LA(1);

                    if ( (LA101_0==RULE_ID) ) {
                        int LA101_1 = input.LA(2);

                        if ( (LA101_1==36) ) {
                            alt101=1;
                        }
                    }
                    switch (alt101) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4762:4: ( (lv_name_0_0= RULE_ID ) ) ( ( '=' )=>otherlv_1= '=' )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4762:4: ( (lv_name_0_0= RULE_ID ) )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4763:1: (lv_name_0_0= RULE_ID )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4763:1: (lv_name_0_0= RULE_ID )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4764:3: lv_name_0_0= RULE_ID
                            {
                            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCallParameter10423); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              			newLeafNode(lv_name_0_0, grammarAccess.getCallParameterAccess().getNameIDTerminalRuleCall_0_0_0_0()); 
                              		
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getCallParameterRule());
                              	        }
                                     		setWithLastConsumed(
                                     			current, 
                                     			"name",
                                      		lv_name_0_0, 
                                      		"ID");
                              	    
                            }

                            }


                            }

                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4780:2: ( ( '=' )=>otherlv_1= '=' )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4780:3: ( '=' )=>otherlv_1= '='
                            {
                            otherlv_1=(Token)match(input,36,FOLLOW_36_in_ruleCallParameter10448); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_1, grammarAccess.getCallParameterAccess().getEqualsSignKeyword_0_0_1());
                                  
                            }

                            }


                            }
                            break;

                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4785:4: ( (lv_value_2_0= ruleXBoolExpression ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4786:1: (lv_value_2_0= ruleXBoolExpression )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4786:1: (lv_value_2_0= ruleXBoolExpression )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4787:3: lv_value_2_0= ruleXBoolExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getCallParameterAccess().getValueXBoolExpressionParserRuleCall_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXBoolExpression_in_ruleCallParameter10472);
                    lv_value_2_0=ruleXBoolExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getCallParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_2_0, 
                              		"XBoolExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4804:6: ( (lv_inheritedParameters_3_0= '...' ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4804:6: ( (lv_inheritedParameters_3_0= '...' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4805:1: (lv_inheritedParameters_3_0= '...' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4805:1: (lv_inheritedParameters_3_0= '...' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4806:3: lv_inheritedParameters_3_0= '...'
                    {
                    lv_inheritedParameters_3_0=(Token)match(input,43,FOLLOW_43_in_ruleCallParameter10497); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_inheritedParameters_3_0, grammarAccess.getCallParameterAccess().getInheritedParametersFullStopFullStopFullStopKeyword_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getCallParameterRule());
                      	        }
                             		setWithLastConsumed(current, "inheritedParameters", true, "...");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCallParameter"


    // $ANTLR start "entryRuleXLiteral"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4827:1: entryRuleXLiteral returns [EObject current=null] : iv_ruleXLiteral= ruleXLiteral EOF ;
    public final EObject entryRuleXLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXLiteral = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4828:2: (iv_ruleXLiteral= ruleXLiteral EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4829:2: iv_ruleXLiteral= ruleXLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXLiteral_in_entryRuleXLiteral10546);
            iv_ruleXLiteral=ruleXLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXLiteral10556); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXLiteral"


    // $ANTLR start "ruleXLiteral"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4836:1: ruleXLiteral returns [EObject current=null] : (this_XIntLiteral_0= ruleXIntLiteral | this_XStringLiteral_1= ruleXStringLiteral | this_XBoolLiteral_2= ruleXBoolLiteral | this_XNullLiteral_3= ruleXNullLiteral | this_XFloatLiteral_4= ruleXFloatLiteral ) ;
    public final EObject ruleXLiteral() throws RecognitionException {
        EObject current = null;

        EObject this_XIntLiteral_0 = null;

        EObject this_XStringLiteral_1 = null;

        EObject this_XBoolLiteral_2 = null;

        EObject this_XNullLiteral_3 = null;

        EObject this_XFloatLiteral_4 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4839:28: ( (this_XIntLiteral_0= ruleXIntLiteral | this_XStringLiteral_1= ruleXStringLiteral | this_XBoolLiteral_2= ruleXBoolLiteral | this_XNullLiteral_3= ruleXNullLiteral | this_XFloatLiteral_4= ruleXFloatLiteral ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4840:1: (this_XIntLiteral_0= ruleXIntLiteral | this_XStringLiteral_1= ruleXStringLiteral | this_XBoolLiteral_2= ruleXBoolLiteral | this_XNullLiteral_3= ruleXNullLiteral | this_XFloatLiteral_4= ruleXFloatLiteral )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4840:1: (this_XIntLiteral_0= ruleXIntLiteral | this_XStringLiteral_1= ruleXStringLiteral | this_XBoolLiteral_2= ruleXBoolLiteral | this_XNullLiteral_3= ruleXNullLiteral | this_XFloatLiteral_4= ruleXFloatLiteral )
            int alt103=5;
            switch ( input.LA(1) ) {
            case RULE_INT:
            case RULE_HEX:
                {
                alt103=1;
                }
                break;
            case RULE_STRING:
            case RULE_VERBATIM_STRING:
                {
                alt103=2;
                }
                break;
            case 84:
            case 85:
                {
                alt103=3;
                }
                break;
            case 83:
                {
                alt103=4;
                }
                break;
            case RULE_FLOAT:
                {
                alt103=5;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 103, 0, input);

                throw nvae;
            }

            switch (alt103) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4841:5: this_XIntLiteral_0= ruleXIntLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXIntLiteralParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXIntLiteral_in_ruleXLiteral10603);
                    this_XIntLiteral_0=ruleXIntLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XIntLiteral_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4851:5: this_XStringLiteral_1= ruleXStringLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXStringLiteral_in_ruleXLiteral10630);
                    this_XStringLiteral_1=ruleXStringLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XStringLiteral_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4861:5: this_XBoolLiteral_2= ruleXBoolLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXBoolLiteralParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXBoolLiteral_in_ruleXLiteral10657);
                    this_XBoolLiteral_2=ruleXBoolLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XBoolLiteral_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4871:5: this_XNullLiteral_3= ruleXNullLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXNullLiteral_in_ruleXLiteral10684);
                    this_XNullLiteral_3=ruleXNullLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XNullLiteral_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4881:5: this_XFloatLiteral_4= ruleXFloatLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXFloatLiteralParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXFloatLiteral_in_ruleXLiteral10711);
                    this_XFloatLiteral_4=ruleXFloatLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XFloatLiteral_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXLiteral"


    // $ANTLR start "entryRuleXNullLiteral"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4897:1: entryRuleXNullLiteral returns [EObject current=null] : iv_ruleXNullLiteral= ruleXNullLiteral EOF ;
    public final EObject entryRuleXNullLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXNullLiteral = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4898:2: (iv_ruleXNullLiteral= ruleXNullLiteral EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4899:2: iv_ruleXNullLiteral= ruleXNullLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXNullLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXNullLiteral_in_entryRuleXNullLiteral10746);
            iv_ruleXNullLiteral=ruleXNullLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXNullLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXNullLiteral10756); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXNullLiteral"


    // $ANTLR start "ruleXNullLiteral"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4906:1: ruleXNullLiteral returns [EObject current=null] : ( () otherlv_1= 'null' ) ;
    public final EObject ruleXNullLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4909:28: ( ( () otherlv_1= 'null' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4910:1: ( () otherlv_1= 'null' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4910:1: ( () otherlv_1= 'null' )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4910:2: () otherlv_1= 'null'
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4910:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4911:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,83,FOLLOW_83_in_ruleXNullLiteral10802); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXNullLiteralAccess().getNullKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXNullLiteral"


    // $ANTLR start "entryRuleXIntLiteral"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4928:1: entryRuleXIntLiteral returns [EObject current=null] : iv_ruleXIntLiteral= ruleXIntLiteral EOF ;
    public final EObject entryRuleXIntLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXIntLiteral = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4929:2: (iv_ruleXIntLiteral= ruleXIntLiteral EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4930:2: iv_ruleXIntLiteral= ruleXIntLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXIntLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXIntLiteral_in_entryRuleXIntLiteral10838);
            iv_ruleXIntLiteral=ruleXIntLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXIntLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXIntLiteral10848); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXIntLiteral"


    // $ANTLR start "ruleXIntLiteral"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4937:1: ruleXIntLiteral returns [EObject current=null] : ( () ( ( (lv_value_1_1= RULE_INT | lv_value_1_2= RULE_HEX ) ) ) ) ;
    public final EObject ruleXIntLiteral() throws RecognitionException {
        EObject current = null;

        Token lv_value_1_1=null;
        Token lv_value_1_2=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4940:28: ( ( () ( ( (lv_value_1_1= RULE_INT | lv_value_1_2= RULE_HEX ) ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4941:1: ( () ( ( (lv_value_1_1= RULE_INT | lv_value_1_2= RULE_HEX ) ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4941:1: ( () ( ( (lv_value_1_1= RULE_INT | lv_value_1_2= RULE_HEX ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4941:2: () ( ( (lv_value_1_1= RULE_INT | lv_value_1_2= RULE_HEX ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4941:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4942:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXIntLiteralAccess().getXIntLiteralAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4947:2: ( ( (lv_value_1_1= RULE_INT | lv_value_1_2= RULE_HEX ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4948:1: ( (lv_value_1_1= RULE_INT | lv_value_1_2= RULE_HEX ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4948:1: ( (lv_value_1_1= RULE_INT | lv_value_1_2= RULE_HEX ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4949:1: (lv_value_1_1= RULE_INT | lv_value_1_2= RULE_HEX )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4949:1: (lv_value_1_1= RULE_INT | lv_value_1_2= RULE_HEX )
            int alt104=2;
            int LA104_0 = input.LA(1);

            if ( (LA104_0==RULE_INT) ) {
                alt104=1;
            }
            else if ( (LA104_0==RULE_HEX) ) {
                alt104=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 104, 0, input);

                throw nvae;
            }
            switch (alt104) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4950:3: lv_value_1_1= RULE_INT
                    {
                    lv_value_1_1=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleXIntLiteral10901); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_value_1_1, grammarAccess.getXIntLiteralAccess().getValueINTTerminalRuleCall_1_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXIntLiteralRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"value",
                              		lv_value_1_1, 
                              		"INT");
                      	    
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4965:8: lv_value_1_2= RULE_HEX
                    {
                    lv_value_1_2=(Token)match(input,RULE_HEX,FOLLOW_RULE_HEX_in_ruleXIntLiteral10921); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_value_1_2, grammarAccess.getXIntLiteralAccess().getValueHEXTerminalRuleCall_1_0_1()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXIntLiteralRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"value",
                              		lv_value_1_2, 
                              		"HEX");
                      	    
                    }

                    }
                    break;

            }


            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXIntLiteral"


    // $ANTLR start "entryRuleXFloatLiteral"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4991:1: entryRuleXFloatLiteral returns [EObject current=null] : iv_ruleXFloatLiteral= ruleXFloatLiteral EOF ;
    public final EObject entryRuleXFloatLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXFloatLiteral = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4992:2: (iv_ruleXFloatLiteral= ruleXFloatLiteral EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4993:2: iv_ruleXFloatLiteral= ruleXFloatLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXFloatLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXFloatLiteral_in_entryRuleXFloatLiteral10965);
            iv_ruleXFloatLiteral=ruleXFloatLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXFloatLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXFloatLiteral10975); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXFloatLiteral"


    // $ANTLR start "ruleXFloatLiteral"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5000:1: ruleXFloatLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= RULE_FLOAT ) ) ) ;
    public final EObject ruleXFloatLiteral() throws RecognitionException {
        EObject current = null;

        Token lv_value_1_0=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5003:28: ( ( () ( (lv_value_1_0= RULE_FLOAT ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5004:1: ( () ( (lv_value_1_0= RULE_FLOAT ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5004:1: ( () ( (lv_value_1_0= RULE_FLOAT ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5004:2: () ( (lv_value_1_0= RULE_FLOAT ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5004:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5005:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXFloatLiteralAccess().getXFloatLiteralAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5010:2: ( (lv_value_1_0= RULE_FLOAT ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5011:1: (lv_value_1_0= RULE_FLOAT )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5011:1: (lv_value_1_0= RULE_FLOAT )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5012:3: lv_value_1_0= RULE_FLOAT
            {
            lv_value_1_0=(Token)match(input,RULE_FLOAT,FOLLOW_RULE_FLOAT_in_ruleXFloatLiteral11026); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_value_1_0, grammarAccess.getXFloatLiteralAccess().getValueFLOATTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getXFloatLiteralRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"value",
                      		lv_value_1_0, 
                      		"FLOAT");
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXFloatLiteral"


    // $ANTLR start "entryRuleXStringLiteral"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5036:1: entryRuleXStringLiteral returns [EObject current=null] : iv_ruleXStringLiteral= ruleXStringLiteral EOF ;
    public final EObject entryRuleXStringLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXStringLiteral = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5037:2: (iv_ruleXStringLiteral= ruleXStringLiteral EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5038:2: iv_ruleXStringLiteral= ruleXStringLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXStringLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXStringLiteral_in_entryRuleXStringLiteral11067);
            iv_ruleXStringLiteral=ruleXStringLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXStringLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXStringLiteral11077); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXStringLiteral"


    // $ANTLR start "ruleXStringLiteral"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5045:1: ruleXStringLiteral returns [EObject current=null] : ( () ( ( (lv_value_1_1= RULE_STRING | lv_value_1_2= RULE_VERBATIM_STRING ) ) ) ) ;
    public final EObject ruleXStringLiteral() throws RecognitionException {
        EObject current = null;

        Token lv_value_1_1=null;
        Token lv_value_1_2=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5048:28: ( ( () ( ( (lv_value_1_1= RULE_STRING | lv_value_1_2= RULE_VERBATIM_STRING ) ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5049:1: ( () ( ( (lv_value_1_1= RULE_STRING | lv_value_1_2= RULE_VERBATIM_STRING ) ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5049:1: ( () ( ( (lv_value_1_1= RULE_STRING | lv_value_1_2= RULE_VERBATIM_STRING ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5049:2: () ( ( (lv_value_1_1= RULE_STRING | lv_value_1_2= RULE_VERBATIM_STRING ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5049:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5050:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5055:2: ( ( (lv_value_1_1= RULE_STRING | lv_value_1_2= RULE_VERBATIM_STRING ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5056:1: ( (lv_value_1_1= RULE_STRING | lv_value_1_2= RULE_VERBATIM_STRING ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5056:1: ( (lv_value_1_1= RULE_STRING | lv_value_1_2= RULE_VERBATIM_STRING ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5057:1: (lv_value_1_1= RULE_STRING | lv_value_1_2= RULE_VERBATIM_STRING )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5057:1: (lv_value_1_1= RULE_STRING | lv_value_1_2= RULE_VERBATIM_STRING )
            int alt105=2;
            int LA105_0 = input.LA(1);

            if ( (LA105_0==RULE_STRING) ) {
                alt105=1;
            }
            else if ( (LA105_0==RULE_VERBATIM_STRING) ) {
                alt105=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 105, 0, input);

                throw nvae;
            }
            switch (alt105) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5058:3: lv_value_1_1= RULE_STRING
                    {
                    lv_value_1_1=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleXStringLiteral11130); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_value_1_1, grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXStringLiteralRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"value",
                              		lv_value_1_1, 
                              		"STRING");
                      	    
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5073:8: lv_value_1_2= RULE_VERBATIM_STRING
                    {
                    lv_value_1_2=(Token)match(input,RULE_VERBATIM_STRING,FOLLOW_RULE_VERBATIM_STRING_in_ruleXStringLiteral11150); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_value_1_2, grammarAccess.getXStringLiteralAccess().getValueVERBATIM_STRINGTerminalRuleCall_1_0_1()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXStringLiteralRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"value",
                              		lv_value_1_2, 
                              		"VERBATIM_STRING");
                      	    
                    }

                    }
                    break;

            }


            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXStringLiteral"


    // $ANTLR start "entryRuleXBoolLiteral"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5099:1: entryRuleXBoolLiteral returns [EObject current=null] : iv_ruleXBoolLiteral= ruleXBoolLiteral EOF ;
    public final EObject entryRuleXBoolLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXBoolLiteral = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5100:2: (iv_ruleXBoolLiteral= ruleXBoolLiteral EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5101:2: iv_ruleXBoolLiteral= ruleXBoolLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXBoolLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXBoolLiteral_in_entryRuleXBoolLiteral11194);
            iv_ruleXBoolLiteral=ruleXBoolLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXBoolLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXBoolLiteral11204); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXBoolLiteral"


    // $ANTLR start "ruleXBoolLiteral"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5108:1: ruleXBoolLiteral returns [EObject current=null] : ( () ( ( (lv_isTrue_1_0= 'true' ) ) | otherlv_2= 'false' ) ) ;
    public final EObject ruleXBoolLiteral() throws RecognitionException {
        EObject current = null;

        Token lv_isTrue_1_0=null;
        Token otherlv_2=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5111:28: ( ( () ( ( (lv_isTrue_1_0= 'true' ) ) | otherlv_2= 'false' ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5112:1: ( () ( ( (lv_isTrue_1_0= 'true' ) ) | otherlv_2= 'false' ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5112:1: ( () ( ( (lv_isTrue_1_0= 'true' ) ) | otherlv_2= 'false' ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5112:2: () ( ( (lv_isTrue_1_0= 'true' ) ) | otherlv_2= 'false' )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5112:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5113:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXBoolLiteralAccess().getXBoolLiteralAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5118:2: ( ( (lv_isTrue_1_0= 'true' ) ) | otherlv_2= 'false' )
            int alt106=2;
            int LA106_0 = input.LA(1);

            if ( (LA106_0==84) ) {
                alt106=1;
            }
            else if ( (LA106_0==85) ) {
                alt106=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 106, 0, input);

                throw nvae;
            }
            switch (alt106) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5118:3: ( (lv_isTrue_1_0= 'true' ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5118:3: ( (lv_isTrue_1_0= 'true' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5119:1: (lv_isTrue_1_0= 'true' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5119:1: (lv_isTrue_1_0= 'true' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5120:3: lv_isTrue_1_0= 'true'
                    {
                    lv_isTrue_1_0=(Token)match(input,84,FOLLOW_84_in_ruleXBoolLiteral11257); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isTrue_1_0, grammarAccess.getXBoolLiteralAccess().getIsTrueTrueKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXBoolLiteralRule());
                      	        }
                             		setWithLastConsumed(current, "isTrue", true, "true");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5134:7: otherlv_2= 'false'
                    {
                    otherlv_2=(Token)match(input,85,FOLLOW_85_in_ruleXBoolLiteral11288); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getXBoolLiteralAccess().getFalseKeyword_1_1());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXBoolLiteral"


    // $ANTLR start "entryRuleXConstructionExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5146:1: entryRuleXConstructionExpression returns [EObject current=null] : iv_ruleXConstructionExpression= ruleXConstructionExpression EOF ;
    public final EObject entryRuleXConstructionExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXConstructionExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5147:2: (iv_ruleXConstructionExpression= ruleXConstructionExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5148:2: iv_ruleXConstructionExpression= ruleXConstructionExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXConstructionExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXConstructionExpression_in_entryRuleXConstructionExpression11325);
            iv_ruleXConstructionExpression=ruleXConstructionExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXConstructionExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXConstructionExpression11335); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXConstructionExpression"


    // $ANTLR start "ruleXConstructionExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5155:1: ruleXConstructionExpression returns [EObject current=null] : ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) otherlv_3= '(' ( ( (lv_arguments_4_0= ruleXExpression ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleXExpression ) ) )* )? otherlv_7= ')' ( ( ( '{' )=>otherlv_8= '{' ) ( (lv_initExps_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_initExps_11_0= ruleXExpression ) ) )* otherlv_12= '}' )? ) ;
    public final EObject ruleXConstructionExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        EObject lv_arguments_4_0 = null;

        EObject lv_arguments_6_0 = null;

        EObject lv_initExps_9_0 = null;

        EObject lv_initExps_11_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5158:28: ( ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) otherlv_3= '(' ( ( (lv_arguments_4_0= ruleXExpression ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleXExpression ) ) )* )? otherlv_7= ')' ( ( ( '{' )=>otherlv_8= '{' ) ( (lv_initExps_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_initExps_11_0= ruleXExpression ) ) )* otherlv_12= '}' )? ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5159:1: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) otherlv_3= '(' ( ( (lv_arguments_4_0= ruleXExpression ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleXExpression ) ) )* )? otherlv_7= ')' ( ( ( '{' )=>otherlv_8= '{' ) ( (lv_initExps_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_initExps_11_0= ruleXExpression ) ) )* otherlv_12= '}' )? )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5159:1: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) otherlv_3= '(' ( ( (lv_arguments_4_0= ruleXExpression ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleXExpression ) ) )* )? otherlv_7= ')' ( ( ( '{' )=>otherlv_8= '{' ) ( (lv_initExps_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_initExps_11_0= ruleXExpression ) ) )* otherlv_12= '}' )? )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5159:2: () otherlv_1= 'new' ( ( ruleQualifiedName ) ) otherlv_3= '(' ( ( (lv_arguments_4_0= ruleXExpression ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleXExpression ) ) )* )? otherlv_7= ')' ( ( ( '{' )=>otherlv_8= '{' ) ( (lv_initExps_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_initExps_11_0= ruleXExpression ) ) )* otherlv_12= '}' )?
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5159:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5160:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXConstructionExpressionAccess().getXConstructionExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,86,FOLLOW_86_in_ruleXConstructionExpression11381); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXConstructionExpressionAccess().getNewKeyword_1());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5169:1: ( ( ruleQualifiedName ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5170:1: ( ruleQualifiedName )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5170:1: ( ruleQualifiedName )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5171:3: ruleQualifiedName
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getXConstructionExpressionRule());
              	        }
                      
            }
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXConstructionExpressionAccess().getTypeXJavaTypeImportCrossReference_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleXConstructionExpression11404);
            ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,17,FOLLOW_17_in_ruleXConstructionExpression11416); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getXConstructionExpressionAccess().getLeftParenthesisKeyword_3());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5188:1: ( ( (lv_arguments_4_0= ruleXExpression ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleXExpression ) ) )* )?
            int alt108=2;
            int LA108_0 = input.LA(1);

            if ( ((LA108_0>=RULE_ID && LA108_0<=RULE_VERBATIM_STRING)||LA108_0==17||LA108_0==34||LA108_0==42||LA108_0==56||LA108_0==65||(LA108_0>=70 && LA108_0<=73)||LA108_0==79||(LA108_0>=81 && LA108_0<=88)||(LA108_0>=90 && LA108_0<=91)) ) {
                alt108=1;
            }
            switch (alt108) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5188:2: ( (lv_arguments_4_0= ruleXExpression ) ) (otherlv_5= ',' ( (lv_arguments_6_0= ruleXExpression ) ) )*
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5188:2: ( (lv_arguments_4_0= ruleXExpression ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5189:1: (lv_arguments_4_0= ruleXExpression )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5189:1: (lv_arguments_4_0= ruleXExpression )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5190:3: lv_arguments_4_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXConstructionExpressionAccess().getArgumentsXExpressionParserRuleCall_4_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXConstructionExpression11438);
                    lv_arguments_4_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXConstructionExpressionRule());
                      	        }
                             		add(
                             			current, 
                             			"arguments",
                              		lv_arguments_4_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5206:2: (otherlv_5= ',' ( (lv_arguments_6_0= ruleXExpression ) ) )*
                    loop107:
                    do {
                        int alt107=2;
                        int LA107_0 = input.LA(1);

                        if ( (LA107_0==18) ) {
                            alt107=1;
                        }


                        switch (alt107) {
                    	case 1 :
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5206:4: otherlv_5= ',' ( (lv_arguments_6_0= ruleXExpression ) )
                    	    {
                    	    otherlv_5=(Token)match(input,18,FOLLOW_18_in_ruleXConstructionExpression11451); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_5, grammarAccess.getXConstructionExpressionAccess().getCommaKeyword_4_1_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5210:1: ( (lv_arguments_6_0= ruleXExpression ) )
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5211:1: (lv_arguments_6_0= ruleXExpression )
                    	    {
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5211:1: (lv_arguments_6_0= ruleXExpression )
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5212:3: lv_arguments_6_0= ruleXExpression
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXConstructionExpressionAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleXExpression_in_ruleXConstructionExpression11472);
                    	    lv_arguments_6_0=ruleXExpression();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXConstructionExpressionRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"arguments",
                    	              		lv_arguments_6_0, 
                    	              		"XExpression");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop107;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_7=(Token)match(input,19,FOLLOW_19_in_ruleXConstructionExpression11488); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getXConstructionExpressionAccess().getRightParenthesisKeyword_5());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5232:1: ( ( ( '{' )=>otherlv_8= '{' ) ( (lv_initExps_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_initExps_11_0= ruleXExpression ) ) )* otherlv_12= '}' )?
            int alt110=2;
            alt110 = dfa110.predict(input);
            switch (alt110) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5232:2: ( ( '{' )=>otherlv_8= '{' ) ( (lv_initExps_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_initExps_11_0= ruleXExpression ) ) )* otherlv_12= '}'
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5232:2: ( ( '{' )=>otherlv_8= '{' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5232:3: ( '{' )=>otherlv_8= '{'
                    {
                    otherlv_8=(Token)match(input,26,FOLLOW_26_in_ruleXConstructionExpression11509); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_8, grammarAccess.getXConstructionExpressionAccess().getLeftCurlyBracketKeyword_6_0());
                          
                    }

                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5237:2: ( (lv_initExps_9_0= ruleXExpression ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5238:1: (lv_initExps_9_0= ruleXExpression )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5238:1: (lv_initExps_9_0= ruleXExpression )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5239:3: lv_initExps_9_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXConstructionExpressionAccess().getInitExpsXExpressionParserRuleCall_6_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXConstructionExpression11531);
                    lv_initExps_9_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXConstructionExpressionRule());
                      	        }
                             		add(
                             			current, 
                             			"initExps",
                              		lv_initExps_9_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5255:2: (otherlv_10= ',' ( (lv_initExps_11_0= ruleXExpression ) ) )*
                    loop109:
                    do {
                        int alt109=2;
                        int LA109_0 = input.LA(1);

                        if ( (LA109_0==18) ) {
                            alt109=1;
                        }


                        switch (alt109) {
                    	case 1 :
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5255:4: otherlv_10= ',' ( (lv_initExps_11_0= ruleXExpression ) )
                    	    {
                    	    otherlv_10=(Token)match(input,18,FOLLOW_18_in_ruleXConstructionExpression11544); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_10, grammarAccess.getXConstructionExpressionAccess().getCommaKeyword_6_2_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5259:1: ( (lv_initExps_11_0= ruleXExpression ) )
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5260:1: (lv_initExps_11_0= ruleXExpression )
                    	    {
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5260:1: (lv_initExps_11_0= ruleXExpression )
                    	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5261:3: lv_initExps_11_0= ruleXExpression
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXConstructionExpressionAccess().getInitExpsXExpressionParserRuleCall_6_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleXExpression_in_ruleXConstructionExpression11565);
                    	    lv_initExps_11_0=ruleXExpression();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXConstructionExpressionRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"initExps",
                    	              		lv_initExps_11_0, 
                    	              		"XExpression");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop109;
                        }
                    } while (true);

                    otherlv_12=(Token)match(input,27,FOLLOW_27_in_ruleXConstructionExpression11579); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_12, grammarAccess.getXConstructionExpressionAccess().getRightCurlyBracketKeyword_6_3());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXConstructionExpression"


    // $ANTLR start "entryRuleXInitObjectExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5289:1: entryRuleXInitObjectExpression returns [EObject current=null] : iv_ruleXInitObjectExpression= ruleXInitObjectExpression EOF ;
    public final EObject entryRuleXInitObjectExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXInitObjectExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5290:2: (iv_ruleXInitObjectExpression= ruleXInitObjectExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5291:2: iv_ruleXInitObjectExpression= ruleXInitObjectExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXInitObjectExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXInitObjectExpression_in_entryRuleXInitObjectExpression11617);
            iv_ruleXInitObjectExpression=ruleXInitObjectExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXInitObjectExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXInitObjectExpression11627); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXInitObjectExpression"


    // $ANTLR start "ruleXInitObjectExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5298:1: ruleXInitObjectExpression returns [EObject current=null] : ( () otherlv_1= 'init ' ( ( ( ( '?' ) ) )=> ( (lv_nullSafe_2_0= '?' ) ) )? ( (lv_object_3_0= ruleXExpression ) ) ( (lv_initExp_4_0= ruleXBlockExpression ) ) ) ;
    public final EObject ruleXInitObjectExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_nullSafe_2_0=null;
        EObject lv_object_3_0 = null;

        EObject lv_initExp_4_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5301:28: ( ( () otherlv_1= 'init ' ( ( ( ( '?' ) ) )=> ( (lv_nullSafe_2_0= '?' ) ) )? ( (lv_object_3_0= ruleXExpression ) ) ( (lv_initExp_4_0= ruleXBlockExpression ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5302:1: ( () otherlv_1= 'init ' ( ( ( ( '?' ) ) )=> ( (lv_nullSafe_2_0= '?' ) ) )? ( (lv_object_3_0= ruleXExpression ) ) ( (lv_initExp_4_0= ruleXBlockExpression ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5302:1: ( () otherlv_1= 'init ' ( ( ( ( '?' ) ) )=> ( (lv_nullSafe_2_0= '?' ) ) )? ( (lv_object_3_0= ruleXExpression ) ) ( (lv_initExp_4_0= ruleXBlockExpression ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5302:2: () otherlv_1= 'init ' ( ( ( ( '?' ) ) )=> ( (lv_nullSafe_2_0= '?' ) ) )? ( (lv_object_3_0= ruleXExpression ) ) ( (lv_initExp_4_0= ruleXBlockExpression ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5302:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5303:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXInitObjectExpressionAccess().getXInitObjectExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,87,FOLLOW_87_in_ruleXInitObjectExpression11673); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXInitObjectExpressionAccess().getInitKeyword_1());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5312:1: ( ( ( ( '?' ) ) )=> ( (lv_nullSafe_2_0= '?' ) ) )?
            int alt111=2;
            int LA111_0 = input.LA(1);

            if ( (LA111_0==80) && (synpred28_InternalUnicornDSL())) {
                alt111=1;
            }
            switch (alt111) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5312:2: ( ( ( '?' ) ) )=> ( (lv_nullSafe_2_0= '?' ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5318:5: ( (lv_nullSafe_2_0= '?' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5319:1: (lv_nullSafe_2_0= '?' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5319:1: (lv_nullSafe_2_0= '?' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5320:3: lv_nullSafe_2_0= '?'
                    {
                    lv_nullSafe_2_0=(Token)match(input,80,FOLLOW_80_in_ruleXInitObjectExpression11709); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_nullSafe_2_0, grammarAccess.getXInitObjectExpressionAccess().getNullSafeQuestionMarkKeyword_2_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXInitObjectExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "nullSafe", true, "?");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5333:4: ( (lv_object_3_0= ruleXExpression ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5334:1: (lv_object_3_0= ruleXExpression )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5334:1: (lv_object_3_0= ruleXExpression )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5335:3: lv_object_3_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXInitObjectExpressionAccess().getObjectXExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXInitObjectExpression11745);
            lv_object_3_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXInitObjectExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"object",
                      		lv_object_3_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5351:2: ( (lv_initExp_4_0= ruleXBlockExpression ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5352:1: (lv_initExp_4_0= ruleXBlockExpression )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5352:1: (lv_initExp_4_0= ruleXBlockExpression )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5353:3: lv_initExp_4_0= ruleXBlockExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXInitObjectExpressionAccess().getInitExpXBlockExpressionParserRuleCall_4_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXBlockExpression_in_ruleXInitObjectExpression11766);
            lv_initExp_4_0=ruleXBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXInitObjectExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"initExp",
                      		lv_initExp_4_0, 
                      		"XBlockExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXInitObjectExpression"


    // $ANTLR start "entryRuleXIfExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5377:1: entryRuleXIfExpression returns [EObject current=null] : iv_ruleXIfExpression= ruleXIfExpression EOF ;
    public final EObject entryRuleXIfExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXIfExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5378:2: (iv_ruleXIfExpression= ruleXIfExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5379:2: iv_ruleXIfExpression= ruleXIfExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXIfExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXIfExpression_in_entryRuleXIfExpression11802);
            iv_ruleXIfExpression=ruleXIfExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXIfExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXIfExpression11812); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXIfExpression"


    // $ANTLR start "ruleXIfExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5386:1: ruleXIfExpression returns [EObject current=null] : ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_condition_3_0= ruleXExpression ) ) otherlv_4= ')' ( ( ( ruleXBreakableBlockExpression ) )=> (lv_ifTrue_5_0= ruleXBreakableBlockExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_ifFalse_7_0= ruleXBreakableBlockExpression ) ) )? ) ;
    public final EObject ruleXIfExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_condition_3_0 = null;

        EObject lv_ifTrue_5_0 = null;

        EObject lv_ifFalse_7_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5389:28: ( ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_condition_3_0= ruleXExpression ) ) otherlv_4= ')' ( ( ( ruleXBreakableBlockExpression ) )=> (lv_ifTrue_5_0= ruleXBreakableBlockExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_ifFalse_7_0= ruleXBreakableBlockExpression ) ) )? ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5390:1: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_condition_3_0= ruleXExpression ) ) otherlv_4= ')' ( ( ( ruleXBreakableBlockExpression ) )=> (lv_ifTrue_5_0= ruleXBreakableBlockExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_ifFalse_7_0= ruleXBreakableBlockExpression ) ) )? )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5390:1: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_condition_3_0= ruleXExpression ) ) otherlv_4= ')' ( ( ( ruleXBreakableBlockExpression ) )=> (lv_ifTrue_5_0= ruleXBreakableBlockExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_ifFalse_7_0= ruleXBreakableBlockExpression ) ) )? )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5390:2: () otherlv_1= 'if' otherlv_2= '(' ( (lv_condition_3_0= ruleXExpression ) ) otherlv_4= ')' ( ( ( ruleXBreakableBlockExpression ) )=> (lv_ifTrue_5_0= ruleXBreakableBlockExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_ifFalse_7_0= ruleXBreakableBlockExpression ) ) )?
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5390:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5391:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,88,FOLLOW_88_in_ruleXIfExpression11858); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXIfExpressionAccess().getIfKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,17,FOLLOW_17_in_ruleXIfExpression11870); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5404:1: ( (lv_condition_3_0= ruleXExpression ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5405:1: (lv_condition_3_0= ruleXExpression )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5405:1: (lv_condition_3_0= ruleXExpression )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5406:3: lv_condition_3_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getConditionXExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXIfExpression11891);
            lv_condition_3_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"condition",
                      		lv_condition_3_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,19,FOLLOW_19_in_ruleXIfExpression11903); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5426:1: ( ( ( ruleXBreakableBlockExpression ) )=> (lv_ifTrue_5_0= ruleXBreakableBlockExpression ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5426:2: ( ( ruleXBreakableBlockExpression ) )=> (lv_ifTrue_5_0= ruleXBreakableBlockExpression )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5431:1: (lv_ifTrue_5_0= ruleXBreakableBlockExpression )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5432:3: lv_ifTrue_5_0= ruleXBreakableBlockExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getIfTrueXBreakableBlockExpressionParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXBreakableBlockExpression_in_ruleXIfExpression11934);
            lv_ifTrue_5_0=ruleXBreakableBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"ifTrue",
                      		lv_ifTrue_5_0, 
                      		"XBreakableBlockExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5448:2: ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_ifFalse_7_0= ruleXBreakableBlockExpression ) ) )?
            int alt112=2;
            int LA112_0 = input.LA(1);

            if ( (LA112_0==89) ) {
                int LA112_1 = input.LA(2);

                if ( (synpred30_InternalUnicornDSL()) ) {
                    alt112=1;
                }
            }
            switch (alt112) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5448:3: ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_ifFalse_7_0= ruleXBreakableBlockExpression ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5448:3: ( ( 'else' )=>otherlv_6= 'else' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5448:4: ( 'else' )=>otherlv_6= 'else'
                    {
                    otherlv_6=(Token)match(input,89,FOLLOW_89_in_ruleXIfExpression11955); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0());
                          
                    }

                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5453:2: ( (lv_ifFalse_7_0= ruleXBreakableBlockExpression ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5454:1: (lv_ifFalse_7_0= ruleXBreakableBlockExpression )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5454:1: (lv_ifFalse_7_0= ruleXBreakableBlockExpression )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5455:3: lv_ifFalse_7_0= ruleXBreakableBlockExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getIfFalseXBreakableBlockExpressionParserRuleCall_6_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXBreakableBlockExpression_in_ruleXIfExpression11977);
                    lv_ifFalse_7_0=ruleXBreakableBlockExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"ifFalse",
                              		lv_ifFalse_7_0, 
                              		"XBreakableBlockExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXIfExpression"


    // $ANTLR start "entryRuleXWhileExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5479:1: entryRuleXWhileExpression returns [EObject current=null] : iv_ruleXWhileExpression= ruleXWhileExpression EOF ;
    public final EObject entryRuleXWhileExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXWhileExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5480:2: (iv_ruleXWhileExpression= ruleXWhileExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5481:2: iv_ruleXWhileExpression= ruleXWhileExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXWhileExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXWhileExpression_in_entryRuleXWhileExpression12015);
            iv_ruleXWhileExpression=ruleXWhileExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXWhileExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXWhileExpression12025); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXWhileExpression"


    // $ANTLR start "ruleXWhileExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5488:1: ruleXWhileExpression returns [EObject current=null] : ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_condition_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXBreakableBlockExpression ) ) ) ;
    public final EObject ruleXWhileExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_condition_3_0 = null;

        EObject lv_body_5_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5491:28: ( ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_condition_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXBreakableBlockExpression ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5492:1: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_condition_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXBreakableBlockExpression ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5492:1: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_condition_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXBreakableBlockExpression ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5492:2: () otherlv_1= 'while' otherlv_2= '(' ( (lv_condition_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXBreakableBlockExpression ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5492:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5493:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,90,FOLLOW_90_in_ruleXWhileExpression12071); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,17,FOLLOW_17_in_ruleXWhileExpression12083); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5506:1: ( (lv_condition_3_0= ruleXExpression ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5507:1: (lv_condition_3_0= ruleXExpression )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5507:1: (lv_condition_3_0= ruleXExpression )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5508:3: lv_condition_3_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXWhileExpressionAccess().getConditionXExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXWhileExpression12104);
            lv_condition_3_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"condition",
                      		lv_condition_3_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,19,FOLLOW_19_in_ruleXWhileExpression12116); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5528:1: ( (lv_body_5_0= ruleXBreakableBlockExpression ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5529:1: (lv_body_5_0= ruleXBreakableBlockExpression )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5529:1: (lv_body_5_0= ruleXBreakableBlockExpression )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5530:3: lv_body_5_0= ruleXBreakableBlockExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXWhileExpressionAccess().getBodyXBreakableBlockExpressionParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXBreakableBlockExpression_in_ruleXWhileExpression12137);
            lv_body_5_0=ruleXBreakableBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"body",
                      		lv_body_5_0, 
                      		"XBreakableBlockExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXWhileExpression"


    // $ANTLR start "entryRuleXForExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5554:1: entryRuleXForExpression returns [EObject current=null] : iv_ruleXForExpression= ruleXForExpression EOF ;
    public final EObject entryRuleXForExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXForExpression = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5555:2: (iv_ruleXForExpression= ruleXForExpression EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5556:2: iv_ruleXForExpression= ruleXForExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXForExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXForExpression_in_entryRuleXForExpression12173);
            iv_ruleXForExpression=ruleXForExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXForExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXForExpression12183); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXForExpression"


    // $ANTLR start "ruleXForExpression"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5563:1: ruleXForExpression returns [EObject current=null] : ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_forVar_3_0= ruleXForControlVariable ) )? ( (otherlv_4= ';' ( (lv_condition_5_0= ruleXExpression ) ) otherlv_6= ';' ( ( (lv_postFors_7_0= ruleXExpression ) ) (otherlv_8= ',' ( (lv_postFors_9_0= ruleXExpression ) ) )* )? ) | ( ( (lv_forEach_10_0= ':' ) ) ( (lv_list_11_0= ruleXExpression ) ) ) ) otherlv_12= ')' ( (lv_body_13_0= ruleXBreakableBlockExpression ) ) ) ;
    public final EObject ruleXForExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token lv_forEach_10_0=null;
        Token otherlv_12=null;
        EObject lv_forVar_3_0 = null;

        EObject lv_condition_5_0 = null;

        EObject lv_postFors_7_0 = null;

        EObject lv_postFors_9_0 = null;

        EObject lv_list_11_0 = null;

        EObject lv_body_13_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5566:28: ( ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_forVar_3_0= ruleXForControlVariable ) )? ( (otherlv_4= ';' ( (lv_condition_5_0= ruleXExpression ) ) otherlv_6= ';' ( ( (lv_postFors_7_0= ruleXExpression ) ) (otherlv_8= ',' ( (lv_postFors_9_0= ruleXExpression ) ) )* )? ) | ( ( (lv_forEach_10_0= ':' ) ) ( (lv_list_11_0= ruleXExpression ) ) ) ) otherlv_12= ')' ( (lv_body_13_0= ruleXBreakableBlockExpression ) ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5567:1: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_forVar_3_0= ruleXForControlVariable ) )? ( (otherlv_4= ';' ( (lv_condition_5_0= ruleXExpression ) ) otherlv_6= ';' ( ( (lv_postFors_7_0= ruleXExpression ) ) (otherlv_8= ',' ( (lv_postFors_9_0= ruleXExpression ) ) )* )? ) | ( ( (lv_forEach_10_0= ':' ) ) ( (lv_list_11_0= ruleXExpression ) ) ) ) otherlv_12= ')' ( (lv_body_13_0= ruleXBreakableBlockExpression ) ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5567:1: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_forVar_3_0= ruleXForControlVariable ) )? ( (otherlv_4= ';' ( (lv_condition_5_0= ruleXExpression ) ) otherlv_6= ';' ( ( (lv_postFors_7_0= ruleXExpression ) ) (otherlv_8= ',' ( (lv_postFors_9_0= ruleXExpression ) ) )* )? ) | ( ( (lv_forEach_10_0= ':' ) ) ( (lv_list_11_0= ruleXExpression ) ) ) ) otherlv_12= ')' ( (lv_body_13_0= ruleXBreakableBlockExpression ) ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5567:2: () otherlv_1= 'for' otherlv_2= '(' ( (lv_forVar_3_0= ruleXForControlVariable ) )? ( (otherlv_4= ';' ( (lv_condition_5_0= ruleXExpression ) ) otherlv_6= ';' ( ( (lv_postFors_7_0= ruleXExpression ) ) (otherlv_8= ',' ( (lv_postFors_9_0= ruleXExpression ) ) )* )? ) | ( ( (lv_forEach_10_0= ':' ) ) ( (lv_list_11_0= ruleXExpression ) ) ) ) otherlv_12= ')' ( (lv_body_13_0= ruleXBreakableBlockExpression ) )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5567:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5568:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXForExpressionAccess().getXForExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,91,FOLLOW_91_in_ruleXForExpression12229); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXForExpressionAccess().getForKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,17,FOLLOW_17_in_ruleXForExpression12241); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXForExpressionAccess().getLeftParenthesisKeyword_2());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5581:1: ( (lv_forVar_3_0= ruleXForControlVariable ) )?
            int alt113=2;
            int LA113_0 = input.LA(1);

            if ( (LA113_0==RULE_ID||LA113_0==41||(LA113_0>=81 && LA113_0<=82)) ) {
                alt113=1;
            }
            switch (alt113) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5582:1: (lv_forVar_3_0= ruleXForControlVariable )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5582:1: (lv_forVar_3_0= ruleXForControlVariable )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5583:3: lv_forVar_3_0= ruleXForControlVariable
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXForExpressionAccess().getForVarXForControlVariableParserRuleCall_3_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXForControlVariable_in_ruleXForExpression12262);
                    lv_forVar_3_0=ruleXForControlVariable();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXForExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"forVar",
                              		lv_forVar_3_0, 
                              		"XForControlVariable");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5599:3: ( (otherlv_4= ';' ( (lv_condition_5_0= ruleXExpression ) ) otherlv_6= ';' ( ( (lv_postFors_7_0= ruleXExpression ) ) (otherlv_8= ',' ( (lv_postFors_9_0= ruleXExpression ) ) )* )? ) | ( ( (lv_forEach_10_0= ':' ) ) ( (lv_list_11_0= ruleXExpression ) ) ) )
            int alt116=2;
            int LA116_0 = input.LA(1);

            if ( (LA116_0==15) ) {
                alt116=1;
            }
            else if ( (LA116_0==31) ) {
                alt116=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 116, 0, input);

                throw nvae;
            }
            switch (alt116) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5599:4: (otherlv_4= ';' ( (lv_condition_5_0= ruleXExpression ) ) otherlv_6= ';' ( ( (lv_postFors_7_0= ruleXExpression ) ) (otherlv_8= ',' ( (lv_postFors_9_0= ruleXExpression ) ) )* )? )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5599:4: (otherlv_4= ';' ( (lv_condition_5_0= ruleXExpression ) ) otherlv_6= ';' ( ( (lv_postFors_7_0= ruleXExpression ) ) (otherlv_8= ',' ( (lv_postFors_9_0= ruleXExpression ) ) )* )? )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5599:6: otherlv_4= ';' ( (lv_condition_5_0= ruleXExpression ) ) otherlv_6= ';' ( ( (lv_postFors_7_0= ruleXExpression ) ) (otherlv_8= ',' ( (lv_postFors_9_0= ruleXExpression ) ) )* )?
                    {
                    otherlv_4=(Token)match(input,15,FOLLOW_15_in_ruleXForExpression12277); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getXForExpressionAccess().getSemicolonKeyword_4_0_0());
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5603:1: ( (lv_condition_5_0= ruleXExpression ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5604:1: (lv_condition_5_0= ruleXExpression )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5604:1: (lv_condition_5_0= ruleXExpression )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5605:3: lv_condition_5_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXForExpressionAccess().getConditionXExpressionParserRuleCall_4_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXForExpression12298);
                    lv_condition_5_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXForExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"condition",
                              		lv_condition_5_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleXForExpression12310); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getXForExpressionAccess().getSemicolonKeyword_4_0_2());
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5625:1: ( ( (lv_postFors_7_0= ruleXExpression ) ) (otherlv_8= ',' ( (lv_postFors_9_0= ruleXExpression ) ) )* )?
                    int alt115=2;
                    int LA115_0 = input.LA(1);

                    if ( ((LA115_0>=RULE_ID && LA115_0<=RULE_VERBATIM_STRING)||LA115_0==17||LA115_0==34||LA115_0==42||LA115_0==56||LA115_0==65||(LA115_0>=70 && LA115_0<=73)||LA115_0==79||(LA115_0>=81 && LA115_0<=88)||(LA115_0>=90 && LA115_0<=91)) ) {
                        alt115=1;
                    }
                    switch (alt115) {
                        case 1 :
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5625:2: ( (lv_postFors_7_0= ruleXExpression ) ) (otherlv_8= ',' ( (lv_postFors_9_0= ruleXExpression ) ) )*
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5625:2: ( (lv_postFors_7_0= ruleXExpression ) )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5626:1: (lv_postFors_7_0= ruleXExpression )
                            {
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5626:1: (lv_postFors_7_0= ruleXExpression )
                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5627:3: lv_postFors_7_0= ruleXExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXForExpressionAccess().getPostForsXExpressionParserRuleCall_4_0_3_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXExpression_in_ruleXForExpression12332);
                            lv_postFors_7_0=ruleXExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXForExpressionRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"postFors",
                                      		lv_postFors_7_0, 
                                      		"XExpression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5643:2: (otherlv_8= ',' ( (lv_postFors_9_0= ruleXExpression ) ) )*
                            loop114:
                            do {
                                int alt114=2;
                                int LA114_0 = input.LA(1);

                                if ( (LA114_0==18) ) {
                                    alt114=1;
                                }


                                switch (alt114) {
                            	case 1 :
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5643:4: otherlv_8= ',' ( (lv_postFors_9_0= ruleXExpression ) )
                            	    {
                            	    otherlv_8=(Token)match(input,18,FOLLOW_18_in_ruleXForExpression12345); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_8, grammarAccess.getXForExpressionAccess().getCommaKeyword_4_0_3_1_0());
                            	          
                            	    }
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5647:1: ( (lv_postFors_9_0= ruleXExpression ) )
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5648:1: (lv_postFors_9_0= ruleXExpression )
                            	    {
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5648:1: (lv_postFors_9_0= ruleXExpression )
                            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5649:3: lv_postFors_9_0= ruleXExpression
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getXForExpressionAccess().getPostForsXExpressionParserRuleCall_4_0_3_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleXExpression_in_ruleXForExpression12366);
                            	    lv_postFors_9_0=ruleXExpression();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getXForExpressionRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"postFors",
                            	              		lv_postFors_9_0, 
                            	              		"XExpression");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop114;
                                }
                            } while (true);


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5666:6: ( ( (lv_forEach_10_0= ':' ) ) ( (lv_list_11_0= ruleXExpression ) ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5666:6: ( ( (lv_forEach_10_0= ':' ) ) ( (lv_list_11_0= ruleXExpression ) ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5666:7: ( (lv_forEach_10_0= ':' ) ) ( (lv_list_11_0= ruleXExpression ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5666:7: ( (lv_forEach_10_0= ':' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5667:1: (lv_forEach_10_0= ':' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5667:1: (lv_forEach_10_0= ':' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5668:3: lv_forEach_10_0= ':'
                    {
                    lv_forEach_10_0=(Token)match(input,31,FOLLOW_31_in_ruleXForExpression12396); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_forEach_10_0, grammarAccess.getXForExpressionAccess().getForEachColonKeyword_4_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXForExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "forEach", true, ":");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5681:2: ( (lv_list_11_0= ruleXExpression ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5682:1: (lv_list_11_0= ruleXExpression )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5682:1: (lv_list_11_0= ruleXExpression )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5683:3: lv_list_11_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXForExpressionAccess().getListXExpressionParserRuleCall_4_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXForExpression12430);
                    lv_list_11_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXForExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"list",
                              		lv_list_11_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }

            otherlv_12=(Token)match(input,19,FOLLOW_19_in_ruleXForExpression12444); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_12, grammarAccess.getXForExpressionAccess().getRightParenthesisKeyword_5());
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5703:1: ( (lv_body_13_0= ruleXBreakableBlockExpression ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5704:1: (lv_body_13_0= ruleXBreakableBlockExpression )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5704:1: (lv_body_13_0= ruleXBreakableBlockExpression )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5705:3: lv_body_13_0= ruleXBreakableBlockExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXForExpressionAccess().getBodyXBreakableBlockExpressionParserRuleCall_6_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXBreakableBlockExpression_in_ruleXForExpression12465);
            lv_body_13_0=ruleXBreakableBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXForExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"body",
                      		lv_body_13_0, 
                      		"XBreakableBlockExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXForExpression"


    // $ANTLR start "entryRuleXForControlVariable"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5729:1: entryRuleXForControlVariable returns [EObject current=null] : iv_ruleXForControlVariable= ruleXForControlVariable EOF ;
    public final EObject entryRuleXForControlVariable() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXForControlVariable = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5730:2: (iv_ruleXForControlVariable= ruleXForControlVariable EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5731:2: iv_ruleXForControlVariable= ruleXForControlVariable EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXForControlVariableRule()); 
            }
            pushFollow(FOLLOW_ruleXForControlVariable_in_entryRuleXForControlVariable12501);
            iv_ruleXForControlVariable=ruleXForControlVariable();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXForControlVariable; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXForControlVariable12511); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXForControlVariable"


    // $ANTLR start "ruleXForControlVariable"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5738:1: ruleXForControlVariable returns [EObject current=null] : ( () ( ( ( (lv_new_1_0= 'var' ) ) ( (lv_name_2_0= RULE_ID ) ) ) | ( (lv_feature_3_0= ruleXIdentifiedElementFeatureCall ) ) ) (otherlv_4= '=' ( (lv_value_5_0= ruleXExpression ) ) )? ) ;
    public final EObject ruleXForControlVariable() throws RecognitionException {
        EObject current = null;

        Token lv_new_1_0=null;
        Token lv_name_2_0=null;
        Token otherlv_4=null;
        EObject lv_feature_3_0 = null;

        EObject lv_value_5_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5741:28: ( ( () ( ( ( (lv_new_1_0= 'var' ) ) ( (lv_name_2_0= RULE_ID ) ) ) | ( (lv_feature_3_0= ruleXIdentifiedElementFeatureCall ) ) ) (otherlv_4= '=' ( (lv_value_5_0= ruleXExpression ) ) )? ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5742:1: ( () ( ( ( (lv_new_1_0= 'var' ) ) ( (lv_name_2_0= RULE_ID ) ) ) | ( (lv_feature_3_0= ruleXIdentifiedElementFeatureCall ) ) ) (otherlv_4= '=' ( (lv_value_5_0= ruleXExpression ) ) )? )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5742:1: ( () ( ( ( (lv_new_1_0= 'var' ) ) ( (lv_name_2_0= RULE_ID ) ) ) | ( (lv_feature_3_0= ruleXIdentifiedElementFeatureCall ) ) ) (otherlv_4= '=' ( (lv_value_5_0= ruleXExpression ) ) )? )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5742:2: () ( ( ( (lv_new_1_0= 'var' ) ) ( (lv_name_2_0= RULE_ID ) ) ) | ( (lv_feature_3_0= ruleXIdentifiedElementFeatureCall ) ) ) (otherlv_4= '=' ( (lv_value_5_0= ruleXExpression ) ) )?
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5742:2: ()
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5743:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXForControlVariableAccess().getXForControlVariableAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5748:2: ( ( ( (lv_new_1_0= 'var' ) ) ( (lv_name_2_0= RULE_ID ) ) ) | ( (lv_feature_3_0= ruleXIdentifiedElementFeatureCall ) ) )
            int alt117=2;
            int LA117_0 = input.LA(1);

            if ( (LA117_0==41) ) {
                alt117=1;
            }
            else if ( (LA117_0==RULE_ID||(LA117_0>=81 && LA117_0<=82)) ) {
                alt117=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 117, 0, input);

                throw nvae;
            }
            switch (alt117) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5748:3: ( ( (lv_new_1_0= 'var' ) ) ( (lv_name_2_0= RULE_ID ) ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5748:3: ( ( (lv_new_1_0= 'var' ) ) ( (lv_name_2_0= RULE_ID ) ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5748:4: ( (lv_new_1_0= 'var' ) ) ( (lv_name_2_0= RULE_ID ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5748:4: ( (lv_new_1_0= 'var' ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5749:1: (lv_new_1_0= 'var' )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5749:1: (lv_new_1_0= 'var' )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5750:3: lv_new_1_0= 'var'
                    {
                    lv_new_1_0=(Token)match(input,41,FOLLOW_41_in_ruleXForControlVariable12565); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_new_1_0, grammarAccess.getXForControlVariableAccess().getNewVarKeyword_1_0_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXForControlVariableRule());
                      	        }
                             		setWithLastConsumed(current, "new", true, "var");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5763:2: ( (lv_name_2_0= RULE_ID ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5764:1: (lv_name_2_0= RULE_ID )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5764:1: (lv_name_2_0= RULE_ID )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5765:3: lv_name_2_0= RULE_ID
                    {
                    lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleXForControlVariable12595); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_2_0, grammarAccess.getXForControlVariableAccess().getNameIDTerminalRuleCall_1_0_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXForControlVariableRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_2_0, 
                              		"ID");
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5782:6: ( (lv_feature_3_0= ruleXIdentifiedElementFeatureCall ) )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5782:6: ( (lv_feature_3_0= ruleXIdentifiedElementFeatureCall ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5783:1: (lv_feature_3_0= ruleXIdentifiedElementFeatureCall )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5783:1: (lv_feature_3_0= ruleXIdentifiedElementFeatureCall )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5784:3: lv_feature_3_0= ruleXIdentifiedElementFeatureCall
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXForControlVariableAccess().getFeatureXIdentifiedElementFeatureCallParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXIdentifiedElementFeatureCall_in_ruleXForControlVariable12628);
                    lv_feature_3_0=ruleXIdentifiedElementFeatureCall();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXForControlVariableRule());
                      	        }
                             		set(
                             			current, 
                             			"feature",
                              		lv_feature_3_0, 
                              		"XIdentifiedElementFeatureCall");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5800:3: (otherlv_4= '=' ( (lv_value_5_0= ruleXExpression ) ) )?
            int alt118=2;
            int LA118_0 = input.LA(1);

            if ( (LA118_0==36) ) {
                alt118=1;
            }
            switch (alt118) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5800:5: otherlv_4= '=' ( (lv_value_5_0= ruleXExpression ) )
                    {
                    otherlv_4=(Token)match(input,36,FOLLOW_36_in_ruleXForControlVariable12642); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getXForControlVariableAccess().getEqualsSignKeyword_2_0());
                          
                    }
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5804:1: ( (lv_value_5_0= ruleXExpression ) )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5805:1: (lv_value_5_0= ruleXExpression )
                    {
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5805:1: (lv_value_5_0= ruleXExpression )
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5806:3: lv_value_5_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXForControlVariableAccess().getValueXExpressionParserRuleCall_2_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXForControlVariable12663);
                    lv_value_5_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXForControlVariableRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_5_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXForControlVariable"


    // $ANTLR start "entryRuleQualifiedName"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5830:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
    public final String entryRuleQualifiedName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5831:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5832:2: iv_ruleQualifiedName= ruleQualifiedName EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getQualifiedNameRule()); 
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName12702);
            iv_ruleQualifiedName=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleQualifiedName.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName12713); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedName"


    // $ANTLR start "ruleQualifiedName"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5839:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '::' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5842:28: ( (this_ID_0= RULE_ID (kw= '::' this_ID_2= RULE_ID )* ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5843:1: (this_ID_0= RULE_ID (kw= '::' this_ID_2= RULE_ID )* )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5843:1: (this_ID_0= RULE_ID (kw= '::' this_ID_2= RULE_ID )* )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5843:6: this_ID_0= RULE_ID (kw= '::' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName12753); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(this_ID_0);
                  
            }
            if ( state.backtracking==0 ) {
               
                  newLeafNode(this_ID_0, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_0()); 
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5850:1: (kw= '::' this_ID_2= RULE_ID )*
            loop119:
            do {
                int alt119=2;
                int LA119_0 = input.LA(1);

                if ( (LA119_0==92) ) {
                    alt119=1;
                }


                switch (alt119) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5851:2: kw= '::' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)match(input,92,FOLLOW_92_in_ruleQualifiedName12772); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              current.merge(kw);
            	              newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getColonColonKeyword_1_0()); 
            	          
            	    }
            	    this_ID_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName12787); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      		current.merge(this_ID_2);
            	          
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	          newLeafNode(this_ID_2, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_1_1()); 
            	          
            	    }

            	    }
            	    break;

            	default :
            	    break loop119;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedName"


    // $ANTLR start "entryRuleDotQualifiedName"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5871:1: entryRuleDotQualifiedName returns [String current=null] : iv_ruleDotQualifiedName= ruleDotQualifiedName EOF ;
    public final String entryRuleDotQualifiedName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleDotQualifiedName = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5872:2: (iv_ruleDotQualifiedName= ruleDotQualifiedName EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5873:2: iv_ruleDotQualifiedName= ruleDotQualifiedName EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDotQualifiedNameRule()); 
            }
            pushFollow(FOLLOW_ruleDotQualifiedName_in_entryRuleDotQualifiedName12835);
            iv_ruleDotQualifiedName=ruleDotQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDotQualifiedName.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleDotQualifiedName12846); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDotQualifiedName"


    // $ANTLR start "ruleDotQualifiedName"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5880:1: ruleDotQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (this_ID_0= RULE_ID | kw= 'language' | kw= 'entity' | kw= 'relation' | kw= 'theme' | kw= 'diagram' | kw= 'rule' ) ( ( ( '.' )=>kw= '.' ) (this_ID_8= RULE_ID | kw= 'language' | kw= 'entity' | kw= 'relation' | kw= 'theme' | kw= 'diagram' | kw= 'rule' ) )* ) ;
    public final AntlrDatatypeRuleToken ruleDotQualifiedName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_8=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5883:28: ( ( (this_ID_0= RULE_ID | kw= 'language' | kw= 'entity' | kw= 'relation' | kw= 'theme' | kw= 'diagram' | kw= 'rule' ) ( ( ( '.' )=>kw= '.' ) (this_ID_8= RULE_ID | kw= 'language' | kw= 'entity' | kw= 'relation' | kw= 'theme' | kw= 'diagram' | kw= 'rule' ) )* ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5884:1: ( (this_ID_0= RULE_ID | kw= 'language' | kw= 'entity' | kw= 'relation' | kw= 'theme' | kw= 'diagram' | kw= 'rule' ) ( ( ( '.' )=>kw= '.' ) (this_ID_8= RULE_ID | kw= 'language' | kw= 'entity' | kw= 'relation' | kw= 'theme' | kw= 'diagram' | kw= 'rule' ) )* )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5884:1: ( (this_ID_0= RULE_ID | kw= 'language' | kw= 'entity' | kw= 'relation' | kw= 'theme' | kw= 'diagram' | kw= 'rule' ) ( ( ( '.' )=>kw= '.' ) (this_ID_8= RULE_ID | kw= 'language' | kw= 'entity' | kw= 'relation' | kw= 'theme' | kw= 'diagram' | kw= 'rule' ) )* )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5884:2: (this_ID_0= RULE_ID | kw= 'language' | kw= 'entity' | kw= 'relation' | kw= 'theme' | kw= 'diagram' | kw= 'rule' ) ( ( ( '.' )=>kw= '.' ) (this_ID_8= RULE_ID | kw= 'language' | kw= 'entity' | kw= 'relation' | kw= 'theme' | kw= 'diagram' | kw= 'rule' ) )*
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5884:2: (this_ID_0= RULE_ID | kw= 'language' | kw= 'entity' | kw= 'relation' | kw= 'theme' | kw= 'diagram' | kw= 'rule' )
            int alt120=7;
            switch ( input.LA(1) ) {
            case RULE_ID:
                {
                alt120=1;
                }
                break;
            case 16:
                {
                alt120=2;
                }
                break;
            case 28:
                {
                alt120=3;
                }
                break;
            case 29:
                {
                alt120=4;
                }
                break;
            case 32:
                {
                alt120=5;
                }
                break;
            case 30:
                {
                alt120=6;
                }
                break;
            case 33:
                {
                alt120=7;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 120, 0, input);

                throw nvae;
            }

            switch (alt120) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5884:7: this_ID_0= RULE_ID
                    {
                    this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDotQualifiedName12887); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      		current.merge(this_ID_0);
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                          newLeafNode(this_ID_0, grammarAccess.getDotQualifiedNameAccess().getIDTerminalRuleCall_0_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5893:2: kw= 'language'
                    {
                    kw=(Token)match(input,16,FOLLOW_16_in_ruleDotQualifiedName12911); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getDotQualifiedNameAccess().getLanguageKeyword_0_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5900:2: kw= 'entity'
                    {
                    kw=(Token)match(input,28,FOLLOW_28_in_ruleDotQualifiedName12930); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getDotQualifiedNameAccess().getEntityKeyword_0_2()); 
                          
                    }

                    }
                    break;
                case 4 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5907:2: kw= 'relation'
                    {
                    kw=(Token)match(input,29,FOLLOW_29_in_ruleDotQualifiedName12949); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getDotQualifiedNameAccess().getRelationKeyword_0_3()); 
                          
                    }

                    }
                    break;
                case 5 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5914:2: kw= 'theme'
                    {
                    kw=(Token)match(input,32,FOLLOW_32_in_ruleDotQualifiedName12968); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getDotQualifiedNameAccess().getThemeKeyword_0_4()); 
                          
                    }

                    }
                    break;
                case 6 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5921:2: kw= 'diagram'
                    {
                    kw=(Token)match(input,30,FOLLOW_30_in_ruleDotQualifiedName12987); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getDotQualifiedNameAccess().getDiagramKeyword_0_5()); 
                          
                    }

                    }
                    break;
                case 7 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5928:2: kw= 'rule'
                    {
                    kw=(Token)match(input,33,FOLLOW_33_in_ruleDotQualifiedName13006); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getDotQualifiedNameAccess().getRuleKeyword_0_6()); 
                          
                    }

                    }
                    break;

            }

            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5933:2: ( ( ( '.' )=>kw= '.' ) (this_ID_8= RULE_ID | kw= 'language' | kw= 'entity' | kw= 'relation' | kw= 'theme' | kw= 'diagram' | kw= 'rule' ) )*
            loop122:
            do {
                int alt122=2;
                int LA122_0 = input.LA(1);

                if ( (LA122_0==68) && (synpred31_InternalUnicornDSL())) {
                    alt122=1;
                }


                switch (alt122) {
            	case 1 :
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5933:3: ( ( '.' )=>kw= '.' ) (this_ID_8= RULE_ID | kw= 'language' | kw= 'entity' | kw= 'relation' | kw= 'theme' | kw= 'diagram' | kw= 'rule' )
            	    {
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5933:3: ( ( '.' )=>kw= '.' )
            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5933:4: ( '.' )=>kw= '.'
            	    {
            	    kw=(Token)match(input,68,FOLLOW_68_in_ruleDotQualifiedName13030); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              current.merge(kw);
            	              newLeafNode(kw, grammarAccess.getDotQualifiedNameAccess().getFullStopKeyword_1_0()); 
            	          
            	    }

            	    }

            	    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5941:2: (this_ID_8= RULE_ID | kw= 'language' | kw= 'entity' | kw= 'relation' | kw= 'theme' | kw= 'diagram' | kw= 'rule' )
            	    int alt121=7;
            	    switch ( input.LA(1) ) {
            	    case RULE_ID:
            	        {
            	        alt121=1;
            	        }
            	        break;
            	    case 16:
            	        {
            	        alt121=2;
            	        }
            	        break;
            	    case 28:
            	        {
            	        alt121=3;
            	        }
            	        break;
            	    case 29:
            	        {
            	        alt121=4;
            	        }
            	        break;
            	    case 32:
            	        {
            	        alt121=5;
            	        }
            	        break;
            	    case 30:
            	        {
            	        alt121=6;
            	        }
            	        break;
            	    case 33:
            	        {
            	        alt121=7;
            	        }
            	        break;
            	    default:
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 121, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt121) {
            	        case 1 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5941:7: this_ID_8= RULE_ID
            	            {
            	            this_ID_8=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDotQualifiedName13047); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              		current.merge(this_ID_8);
            	                  
            	            }
            	            if ( state.backtracking==0 ) {
            	               
            	                  newLeafNode(this_ID_8, grammarAccess.getDotQualifiedNameAccess().getIDTerminalRuleCall_1_1_0()); 
            	                  
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5950:2: kw= 'language'
            	            {
            	            kw=(Token)match(input,16,FOLLOW_16_in_ruleDotQualifiedName13071); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      current.merge(kw);
            	                      newLeafNode(kw, grammarAccess.getDotQualifiedNameAccess().getLanguageKeyword_1_1_1()); 
            	                  
            	            }

            	            }
            	            break;
            	        case 3 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5957:2: kw= 'entity'
            	            {
            	            kw=(Token)match(input,28,FOLLOW_28_in_ruleDotQualifiedName13090); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      current.merge(kw);
            	                      newLeafNode(kw, grammarAccess.getDotQualifiedNameAccess().getEntityKeyword_1_1_2()); 
            	                  
            	            }

            	            }
            	            break;
            	        case 4 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5964:2: kw= 'relation'
            	            {
            	            kw=(Token)match(input,29,FOLLOW_29_in_ruleDotQualifiedName13109); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      current.merge(kw);
            	                      newLeafNode(kw, grammarAccess.getDotQualifiedNameAccess().getRelationKeyword_1_1_3()); 
            	                  
            	            }

            	            }
            	            break;
            	        case 5 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5971:2: kw= 'theme'
            	            {
            	            kw=(Token)match(input,32,FOLLOW_32_in_ruleDotQualifiedName13128); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      current.merge(kw);
            	                      newLeafNode(kw, grammarAccess.getDotQualifiedNameAccess().getThemeKeyword_1_1_4()); 
            	                  
            	            }

            	            }
            	            break;
            	        case 6 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5978:2: kw= 'diagram'
            	            {
            	            kw=(Token)match(input,30,FOLLOW_30_in_ruleDotQualifiedName13147); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      current.merge(kw);
            	                      newLeafNode(kw, grammarAccess.getDotQualifiedNameAccess().getDiagramKeyword_1_1_5()); 
            	                  
            	            }

            	            }
            	            break;
            	        case 7 :
            	            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5985:2: kw= 'rule'
            	            {
            	            kw=(Token)match(input,33,FOLLOW_33_in_ruleDotQualifiedName13166); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      current.merge(kw);
            	                      newLeafNode(kw, grammarAccess.getDotQualifiedNameAccess().getRuleKeyword_1_1_6()); 
            	                  
            	            }

            	            }
            	            break;

            	    }


            	    }
            	    break;

            	default :
            	    break loop122;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDotQualifiedName"


    // $ANTLR start "entryRuleQualifiedNameStar"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5998:1: entryRuleQualifiedNameStar returns [String current=null] : iv_ruleQualifiedNameStar= ruleQualifiedNameStar EOF ;
    public final String entryRuleQualifiedNameStar() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedNameStar = null;


        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5999:2: (iv_ruleQualifiedNameStar= ruleQualifiedNameStar EOF )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:6000:2: iv_ruleQualifiedNameStar= ruleQualifiedNameStar EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getQualifiedNameStarRule()); 
            }
            pushFollow(FOLLOW_ruleQualifiedNameStar_in_entryRuleQualifiedNameStar13210);
            iv_ruleQualifiedNameStar=ruleQualifiedNameStar();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleQualifiedNameStar.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedNameStar13221); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedNameStar"


    // $ANTLR start "ruleQualifiedNameStar"
    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:6007:1: ruleQualifiedNameStar returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName (kw= '::*' )? ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedNameStar() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_QualifiedName_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:6010:28: ( (this_QualifiedName_0= ruleQualifiedName (kw= '::*' )? ) )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:6011:1: (this_QualifiedName_0= ruleQualifiedName (kw= '::*' )? )
            {
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:6011:1: (this_QualifiedName_0= ruleQualifiedName (kw= '::*' )? )
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:6012:5: this_QualifiedName_0= ruleQualifiedName (kw= '::*' )?
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getQualifiedNameStarAccess().getQualifiedNameParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleQualifiedNameStar13268);
            this_QualifiedName_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(this_QualifiedName_0);
                  
            }
            if ( state.backtracking==0 ) {
               
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:6022:1: (kw= '::*' )?
            int alt123=2;
            int LA123_0 = input.LA(1);

            if ( (LA123_0==93) ) {
                alt123=1;
            }
            switch (alt123) {
                case 1 :
                    // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:6023:2: kw= '::*'
                    {
                    kw=(Token)match(input,93,FOLLOW_93_in_ruleQualifiedNameStar13287); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getQualifiedNameStarAccess().getColonColonAsteriskKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedNameStar"

    // $ANTLR start synpred1_InternalUnicornDSL
    public final void synpred1_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:903:5: ( '}' )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:903:7: '}'
        {
        match(input,27,FOLLOW_27_in_synpred1_InternalUnicornDSL1643); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred1_InternalUnicornDSL

    // $ANTLR start synpred2_InternalUnicornDSL
    public final void synpred2_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1882:4: ( '=' )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1882:6: '='
        {
        match(input,36,FOLLOW_36_in_synpred2_InternalUnicornDSL3690); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred2_InternalUnicornDSL

    // $ANTLR start synpred3_InternalUnicornDSL
    public final void synpred3_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1939:4: ( '=' )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:1939:6: '='
        {
        match(input,36,FOLLOW_36_in_synpred3_InternalUnicornDSL3796); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred3_InternalUnicornDSL

    // $ANTLR start synpred5_InternalUnicornDSL
    public final void synpred5_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2231:2: ( ( () ( ( ( '=' | '+=' | '-=' | '*=' | '/=' ) ) ) ( ( ruleXBoolExpression ) ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2231:3: ( () ( ( ( '=' | '+=' | '-=' | '*=' | '/=' ) ) ) ( ( ruleXBoolExpression ) ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2231:3: ( () ( ( ( '=' | '+=' | '-=' | '*=' | '/=' ) ) ) ( ( ruleXBoolExpression ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2231:4: () ( ( ( '=' | '+=' | '-=' | '*=' | '/=' ) ) ) ( ( ruleXBoolExpression ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2231:4: ()
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2232:1: 
        {
        }

        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2232:2: ( ( ( '=' | '+=' | '-=' | '*=' | '/=' ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2233:1: ( ( '=' | '+=' | '-=' | '*=' | '/=' ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2233:1: ( ( '=' | '+=' | '-=' | '*=' | '/=' ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2234:1: ( '=' | '+=' | '-=' | '*=' | '/=' )
        {
        if ( input.LA(1)==36||(input.LA(1)>=44 && input.LA(1)<=47) ) {
            input.consume();
            state.errorRecovery=false;state.failed=false;
        }
        else {
            if (state.backtracking>0) {state.failed=true; return ;}
            MismatchedSetException mse = new MismatchedSetException(null,input);
            throw mse;
        }


        }


        }

        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2253:2: ( ( ruleXBoolExpression ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2254:1: ( ruleXBoolExpression )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2254:1: ( ruleXBoolExpression )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2255:1: ruleXBoolExpression
        {
        pushFollow(FOLLOW_ruleXBoolExpression_in_synpred5_InternalUnicornDSL4543);
        ruleXBoolExpression();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred5_InternalUnicornDSL

    // $ANTLR start synpred6_InternalUnicornDSL
    public final void synpred6_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2377:2: ( ( () ( ( ruleBoolOps ) ) ( ( ruleXComparativeExpression ) ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2377:3: ( () ( ( ruleBoolOps ) ) ( ( ruleXComparativeExpression ) ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2377:3: ( () ( ( ruleBoolOps ) ) ( ( ruleXComparativeExpression ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2377:4: () ( ( ruleBoolOps ) ) ( ( ruleXComparativeExpression ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2377:4: ()
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2378:1: 
        {
        }

        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2378:2: ( ( ruleBoolOps ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2379:1: ( ruleBoolOps )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2379:1: ( ruleBoolOps )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2380:1: ruleBoolOps
        {
        pushFollow(FOLLOW_ruleBoolOps_in_synpred6_InternalUnicornDSL4839);
        ruleBoolOps();

        state._fsp--;
        if (state.failed) return ;

        }


        }

        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2382:2: ( ( ruleXComparativeExpression ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2383:1: ( ruleXComparativeExpression )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2383:1: ( ruleXComparativeExpression )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2384:1: ruleXComparativeExpression
        {
        pushFollow(FOLLOW_ruleXComparativeExpression_in_synpred6_InternalUnicornDSL4848);
        ruleXComparativeExpression();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred6_InternalUnicornDSL

    // $ANTLR start synpred7_InternalUnicornDSL
    public final void synpred7_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2492:2: ( ( () ( ( ruleCompareOps ) ) ( ( ruleXAddExpression ) ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2492:3: ( () ( ( ruleCompareOps ) ) ( ( ruleXAddExpression ) ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2492:3: ( () ( ( ruleCompareOps ) ) ( ( ruleXAddExpression ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2492:4: () ( ( ruleCompareOps ) ) ( ( ruleXAddExpression ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2492:4: ()
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2493:1: 
        {
        }

        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2493:2: ( ( ruleCompareOps ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2494:1: ( ruleCompareOps )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2494:1: ( ruleCompareOps )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2495:1: ruleCompareOps
        {
        pushFollow(FOLLOW_ruleCompareOps_in_synpred7_InternalUnicornDSL5122);
        ruleCompareOps();

        state._fsp--;
        if (state.failed) return ;

        }


        }

        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2497:2: ( ( ruleXAddExpression ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2498:1: ( ruleXAddExpression )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2498:1: ( ruleXAddExpression )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2499:1: ruleXAddExpression
        {
        pushFollow(FOLLOW_ruleXAddExpression_in_synpred7_InternalUnicornDSL5131);
        ruleXAddExpression();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred7_InternalUnicornDSL

    // $ANTLR start synpred8_InternalUnicornDSL
    public final void synpred8_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2642:2: ( ( () ( ( ruleAddOps ) ) ( ( ruleXMultExpression ) ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2642:3: ( () ( ( ruleAddOps ) ) ( ( ruleXMultExpression ) ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2642:3: ( () ( ( ruleAddOps ) ) ( ( ruleXMultExpression ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2642:4: () ( ( ruleAddOps ) ) ( ( ruleXMultExpression ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2642:4: ()
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2643:1: 
        {
        }

        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2643:2: ( ( ruleAddOps ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2644:1: ( ruleAddOps )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2644:1: ( ruleAddOps )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2645:1: ruleAddOps
        {
        pushFollow(FOLLOW_ruleAddOps_in_synpred8_InternalUnicornDSL5500);
        ruleAddOps();

        state._fsp--;
        if (state.failed) return ;

        }


        }

        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2647:2: ( ( ruleXMultExpression ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2648:1: ( ruleXMultExpression )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2648:1: ( ruleXMultExpression )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2649:1: ruleXMultExpression
        {
        pushFollow(FOLLOW_ruleXMultExpression_in_synpred8_InternalUnicornDSL5509);
        ruleXMultExpression();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred8_InternalUnicornDSL

    // $ANTLR start synpred9_InternalUnicornDSL
    public final void synpred9_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2771:2: ( ( () ( ( ruleMultOps ) ) ( ( ruleXCastExpression ) ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2771:3: ( () ( ( ruleMultOps ) ) ( ( ruleXCastExpression ) ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2771:3: ( () ( ( ruleMultOps ) ) ( ( ruleXCastExpression ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2771:4: () ( ( ruleMultOps ) ) ( ( ruleXCastExpression ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2771:4: ()
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2772:1: 
        {
        }

        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2772:2: ( ( ruleMultOps ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2773:1: ( ruleMultOps )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2773:1: ( ruleMultOps )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2774:1: ruleMultOps
        {
        pushFollow(FOLLOW_ruleMultOps_in_synpred9_InternalUnicornDSL5821);
        ruleMultOps();

        state._fsp--;
        if (state.failed) return ;

        }


        }

        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2776:2: ( ( ruleXCastExpression ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2777:1: ( ruleXCastExpression )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2777:1: ( ruleXCastExpression )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2778:1: ruleXCastExpression
        {
        pushFollow(FOLLOW_ruleXCastExpression_in_synpred9_InternalUnicornDSL5830);
        ruleXCastExpression();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred9_InternalUnicornDSL

    // $ANTLR start synpred10_InternalUnicornDSL
    public final void synpred10_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2914:2: ( ( () 'as' ( ( ruleQualifiedName ) ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2914:3: ( () 'as' ( ( ruleQualifiedName ) ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2914:3: ( () 'as' ( ( ruleQualifiedName ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2914:4: () 'as' ( ( ruleQualifiedName ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2914:4: ()
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2915:1: 
        {
        }

        match(input,39,FOLLOW_39_in_synpred10_InternalUnicornDSL6177); if (state.failed) return ;
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2916:1: ( ( ruleQualifiedName ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2917:1: ( ruleQualifiedName )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2917:1: ( ruleQualifiedName )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:2918:3: ruleQualifiedName
        {
        pushFollow(FOLLOW_ruleQualifiedName_in_synpred10_InternalUnicornDSL6186);
        ruleQualifiedName();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred10_InternalUnicornDSL

    // $ANTLR start synpred11_InternalUnicornDSL
    public final void synpred11_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3030:2: ( ( () ( ( ( '++' | '--' ) ) ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3030:3: ( () ( ( ( '++' | '--' ) ) ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3030:3: ( () ( ( ( '++' | '--' ) ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3030:4: () ( ( ( '++' | '--' ) ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3030:4: ()
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3031:1: 
        {
        }

        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3031:2: ( ( ( '++' | '--' ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3032:1: ( ( '++' | '--' ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3032:1: ( ( '++' | '--' ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3033:1: ( '++' | '--' )
        {
        if ( (input.LA(1)>=66 && input.LA(1)<=67) ) {
            input.consume();
            state.errorRecovery=false;state.failed=false;
        }
        else {
            if (state.backtracking>0) {state.failed=true; return ;}
            MismatchedSetException mse = new MismatchedSetException(null,input);
            throw mse;
        }


        }


        }


        }


        }
    }
    // $ANTLR end synpred11_InternalUnicornDSL

    // $ANTLR start synpred12_InternalUnicornDSL
    public final void synpred12_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3119:3: ( ( () ( '.' | ( ( '?.' ) ) ) ( ( ruleXFeatureCall ) ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3119:4: ( () ( '.' | ( ( '?.' ) ) ) ( ( ruleXFeatureCall ) ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3119:4: ( () ( '.' | ( ( '?.' ) ) ) ( ( ruleXFeatureCall ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3119:5: () ( '.' | ( ( '?.' ) ) ) ( ( ruleXFeatureCall ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3119:5: ()
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3120:1: 
        {
        }

        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3120:2: ( '.' | ( ( '?.' ) ) )
        int alt124=2;
        int LA124_0 = input.LA(1);

        if ( (LA124_0==68) ) {
            alt124=1;
        }
        else if ( (LA124_0==69) ) {
            alt124=2;
        }
        else {
            if (state.backtracking>0) {state.failed=true; return ;}
            NoViableAltException nvae =
                new NoViableAltException("", 124, 0, input);

            throw nvae;
        }
        switch (alt124) {
            case 1 :
                // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3120:4: '.'
                {
                match(input,68,FOLLOW_68_in_synpred12_InternalUnicornDSL6688); if (state.failed) return ;

                }
                break;
            case 2 :
                // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3122:6: ( ( '?.' ) )
                {
                // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3122:6: ( ( '?.' ) )
                // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3123:1: ( '?.' )
                {
                // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3123:1: ( '?.' )
                // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3124:2: '?.'
                {
                match(input,69,FOLLOW_69_in_synpred12_InternalUnicornDSL6702); if (state.failed) return ;

                }


                }


                }
                break;

        }

        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3128:3: ( ( ruleXFeatureCall ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3129:1: ( ruleXFeatureCall )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3129:1: ( ruleXFeatureCall )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3130:1: ruleXFeatureCall
        {
        pushFollow(FOLLOW_ruleXFeatureCall_in_synpred12_InternalUnicornDSL6716);
        ruleXFeatureCall();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred12_InternalUnicornDSL

    // $ANTLR start synpred16_InternalUnicornDSL
    public final void synpred16_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3812:3: ( ( ruleXExpression ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3813:1: ( ruleXExpression )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3813:1: ( ruleXExpression )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3814:1: ruleXExpression
        {
        pushFollow(FOLLOW_ruleXExpression_in_synpred16_InternalUnicornDSL8292);
        ruleXExpression();

        state._fsp--;
        if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred16_InternalUnicornDSL

    // $ANTLR start synpred17_InternalUnicornDSL
    public final void synpred17_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3952:3: ( ';' )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:3952:5: ';'
        {
        match(input,15,FOLLOW_15_in_synpred17_InternalUnicornDSL8647); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred17_InternalUnicornDSL

    // $ANTLR start synpred19_InternalUnicornDSL
    public final void synpred19_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4089:4: ( '}' )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4089:6: '}'
        {
        match(input,27,FOLLOW_27_in_synpred19_InternalUnicornDSL8969); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred19_InternalUnicornDSL

    // $ANTLR start synpred20_InternalUnicornDSL
    public final void synpred20_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4168:4: ( '}' )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4168:6: '}'
        {
        match(input,27,FOLLOW_27_in_synpred20_InternalUnicornDSL9144); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred20_InternalUnicornDSL

    // $ANTLR start synpred21_InternalUnicornDSL
    public final void synpred21_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4370:3: ( ( '?' ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4371:1: ( '?' )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4371:1: ( '?' )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4372:2: '?'
        {
        match(input,80,FOLLOW_80_in_synpred21_InternalUnicornDSL9595); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred21_InternalUnicornDSL

    // $ANTLR start synpred22_InternalUnicornDSL
    public final void synpred22_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4391:6: ( ( '(' ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4392:1: ( '(' )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4392:1: ( '(' )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4393:2: '('
        {
        match(input,17,FOLLOW_17_in_synpred22_InternalUnicornDSL9644); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred22_InternalUnicornDSL

    // $ANTLR start synpred23_InternalUnicornDSL
    public final void synpred23_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4457:8: ( ( '[' ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4458:1: ( '[' )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4458:1: ( '[' )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4459:2: '['
        {
        match(input,34,FOLLOW_34_in_synpred23_InternalUnicornDSL9770); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred23_InternalUnicornDSL

    // $ANTLR start synpred24_InternalUnicornDSL
    public final void synpred24_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4610:6: ( ( '(' ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4611:1: ( '(' )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4611:1: ( '(' )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4612:2: '('
        {
        match(input,17,FOLLOW_17_in_synpred24_InternalUnicornDSL10101); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred24_InternalUnicornDSL

    // $ANTLR start synpred25_InternalUnicornDSL
    public final void synpred25_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4676:8: ( ( '[' ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4677:1: ( '[' )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4677:1: ( '[' )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:4678:2: '['
        {
        match(input,34,FOLLOW_34_in_synpred25_InternalUnicornDSL10227); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred25_InternalUnicornDSL

    // $ANTLR start synpred27_InternalUnicornDSL
    public final void synpred27_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5232:3: ( '{' )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5232:5: '{'
        {
        match(input,26,FOLLOW_26_in_synpred27_InternalUnicornDSL11501); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred27_InternalUnicornDSL

    // $ANTLR start synpred28_InternalUnicornDSL
    public final void synpred28_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5312:2: ( ( ( '?' ) ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5312:3: ( ( '?' ) )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5312:3: ( ( '?' ) )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5313:1: ( '?' )
        {
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5313:1: ( '?' )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5314:2: '?'
        {
        match(input,80,FOLLOW_80_in_synpred28_InternalUnicornDSL11689); if (state.failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred28_InternalUnicornDSL

    // $ANTLR start synpred30_InternalUnicornDSL
    public final void synpred30_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5448:4: ( 'else' )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5448:6: 'else'
        {
        match(input,89,FOLLOW_89_in_synpred30_InternalUnicornDSL11947); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred30_InternalUnicornDSL

    // $ANTLR start synpred31_InternalUnicornDSL
    public final void synpred31_InternalUnicornDSL_fragment() throws RecognitionException {   
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5933:4: ( '.' )
        // ../ms.unicorn.dsl/src-gen/ms/unicorn/dsl/parser/antlr/internal/InternalUnicornDSL.g:5934:2: '.'
        {
        match(input,68,FOLLOW_68_in_synpred31_InternalUnicornDSL13021); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred31_InternalUnicornDSL

    // Delegated rules

    public final boolean synpred9_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred9_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred22_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred22_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred3_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred3_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred28_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred28_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred24_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred24_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred2_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred2_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred6_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred6_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred5_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred5_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred17_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred17_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred1_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred1_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred8_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred8_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred16_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred16_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred25_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred25_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred7_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred7_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred21_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred21_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred19_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred19_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred12_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred12_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred23_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred23_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred31_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred31_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred30_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred30_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred27_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred27_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred10_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred10_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred11_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred11_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred20_InternalUnicornDSL() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred20_InternalUnicornDSL_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }


    protected DFA34 dfa34 = new DFA34(this);
    protected DFA35 dfa35 = new DFA35(this);
    protected DFA47 dfa47 = new DFA47(this);
    protected DFA61 dfa61 = new DFA61(this);
    protected DFA76 dfa76 = new DFA76(this);
    protected DFA92 dfa92 = new DFA92(this);
    protected DFA100 dfa100 = new DFA100(this);
    protected DFA110 dfa110 = new DFA110(this);
    static final String DFA34_eotS =
        "\116\uffff";
    static final String DFA34_eofS =
        "\1\2\115\uffff";
    static final String DFA34_minS =
        "\1\4\1\0\114\uffff";
    static final String DFA34_maxS =
        "\1\133\1\0\114\uffff";
    static final String DFA34_acceptS =
        "\2\uffff\1\2\112\uffff\1\1";
    static final String DFA34_specialS =
        "\1\uffff\1\0\114\uffff}>";
    static final String[] DFA34_transitionS = {
            "\6\2\5\uffff\1\2\1\uffff\3\2\2\uffff\16\2\1\1\1\uffff\5\2\1"+
            "\uffff\36\2\2\uffff\4\2\1\uffff\13\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA34_eot = DFA.unpackEncodedString(DFA34_eotS);
    static final short[] DFA34_eof = DFA.unpackEncodedString(DFA34_eofS);
    static final char[] DFA34_min = DFA.unpackEncodedStringToUnsignedChars(DFA34_minS);
    static final char[] DFA34_max = DFA.unpackEncodedStringToUnsignedChars(DFA34_maxS);
    static final short[] DFA34_accept = DFA.unpackEncodedString(DFA34_acceptS);
    static final short[] DFA34_special = DFA.unpackEncodedString(DFA34_specialS);
    static final short[][] DFA34_transition;

    static {
        int numStates = DFA34_transitionS.length;
        DFA34_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA34_transition[i] = DFA.unpackEncodedString(DFA34_transitionS[i]);
        }
    }

    class DFA34 extends DFA {

        public DFA34(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 34;
            this.eot = DFA34_eot;
            this.eof = DFA34_eof;
            this.min = DFA34_min;
            this.max = DFA34_max;
            this.accept = DFA34_accept;
            this.special = DFA34_special;
            this.transition = DFA34_transition;
        }
        public String getDescription() {
            return "1882:2: ( ( ( '=' )=>otherlv_3= '=' ) ( (lv_value_4_0= ruleXExpression ) ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA34_1 = input.LA(1);

                         
                        int index34_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred2_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index34_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 34, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA35_eotS =
        "\116\uffff";
    static final String DFA35_eofS =
        "\1\2\115\uffff";
    static final String DFA35_minS =
        "\1\4\1\0\114\uffff";
    static final String DFA35_maxS =
        "\1\133\1\0\114\uffff";
    static final String DFA35_acceptS =
        "\2\uffff\1\2\112\uffff\1\1";
    static final String DFA35_specialS =
        "\1\uffff\1\0\114\uffff}>";
    static final String[] DFA35_transitionS = {
            "\6\2\5\uffff\1\2\1\uffff\3\2\2\uffff\16\2\1\1\1\uffff\5\2\1"+
            "\uffff\36\2\2\uffff\4\2\1\uffff\13\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA35_eot = DFA.unpackEncodedString(DFA35_eotS);
    static final short[] DFA35_eof = DFA.unpackEncodedString(DFA35_eofS);
    static final char[] DFA35_min = DFA.unpackEncodedStringToUnsignedChars(DFA35_minS);
    static final char[] DFA35_max = DFA.unpackEncodedStringToUnsignedChars(DFA35_maxS);
    static final short[] DFA35_accept = DFA.unpackEncodedString(DFA35_acceptS);
    static final short[] DFA35_special = DFA.unpackEncodedString(DFA35_specialS);
    static final short[][] DFA35_transition;

    static {
        int numStates = DFA35_transitionS.length;
        DFA35_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA35_transition[i] = DFA.unpackEncodedString(DFA35_transitionS[i]);
        }
    }

    class DFA35 extends DFA {

        public DFA35(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 35;
            this.eot = DFA35_eot;
            this.eof = DFA35_eof;
            this.min = DFA35_min;
            this.max = DFA35_max;
            this.accept = DFA35_accept;
            this.special = DFA35_special;
            this.transition = DFA35_transition;
        }
        public String getDescription() {
            return "1939:2: ( ( ( '=' )=>otherlv_7= '=' ) ( (lv_value_8_0= ruleXExpression ) ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA35_1 = input.LA(1);

                         
                        int index35_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred3_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index35_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 35, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA47_eotS =
        "\12\uffff";
    static final String DFA47_eofS =
        "\1\1\11\uffff";
    static final String DFA47_minS =
        "\1\4\1\uffff\7\0\1\uffff";
    static final String DFA47_maxS =
        "\1\133\1\uffff\7\0\1\uffff";
    static final String DFA47_acceptS =
        "\1\uffff\1\2\7\uffff\1\1";
    static final String DFA47_specialS =
        "\2\uffff\1\3\1\4\1\5\1\6\1\0\1\1\1\2\1\uffff}>";
    static final String[] DFA47_transitionS = {
            "\6\1\5\uffff\1\1\1\uffff\3\1\2\uffff\1\3\1\2\15\1\1\uffff\5"+
            "\1\1\uffff\6\1\1\4\1\5\1\6\1\7\1\10\23\1\2\uffff\4\1\1\uffff"+
            "\13\1",
            "",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            ""
    };

    static final short[] DFA47_eot = DFA.unpackEncodedString(DFA47_eotS);
    static final short[] DFA47_eof = DFA.unpackEncodedString(DFA47_eofS);
    static final char[] DFA47_min = DFA.unpackEncodedStringToUnsignedChars(DFA47_minS);
    static final char[] DFA47_max = DFA.unpackEncodedStringToUnsignedChars(DFA47_maxS);
    static final short[] DFA47_accept = DFA.unpackEncodedString(DFA47_acceptS);
    static final short[] DFA47_special = DFA.unpackEncodedString(DFA47_specialS);
    static final short[][] DFA47_transition;

    static {
        int numStates = DFA47_transitionS.length;
        DFA47_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA47_transition[i] = DFA.unpackEncodedString(DFA47_transitionS[i]);
        }
    }

    class DFA47 extends DFA {

        public DFA47(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 47;
            this.eot = DFA47_eot;
            this.eof = DFA47_eof;
            this.min = DFA47_min;
            this.max = DFA47_max;
            this.accept = DFA47_accept;
            this.special = DFA47_special;
            this.transition = DFA47_transition;
        }
        public String getDescription() {
            return "()* loopback of 2492:1: ( ( ( () ( ( ruleCompareOps ) ) ( ( ruleXAddExpression ) ) ) )=> ( () ( (lv_operator_2_0= ruleCompareOps ) ) ( (lv_rightOperand_3_0= ruleXAddExpression ) ) ) )*";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA47_6 = input.LA(1);

                         
                        int index47_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_InternalUnicornDSL()) ) {s = 9;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index47_6);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA47_7 = input.LA(1);

                         
                        int index47_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_InternalUnicornDSL()) ) {s = 9;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index47_7);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA47_8 = input.LA(1);

                         
                        int index47_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_InternalUnicornDSL()) ) {s = 9;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index47_8);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA47_2 = input.LA(1);

                         
                        int index47_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_InternalUnicornDSL()) ) {s = 9;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index47_2);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA47_3 = input.LA(1);

                         
                        int index47_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_InternalUnicornDSL()) ) {s = 9;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index47_3);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA47_4 = input.LA(1);

                         
                        int index47_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_InternalUnicornDSL()) ) {s = 9;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index47_4);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA47_5 = input.LA(1);

                         
                        int index47_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_InternalUnicornDSL()) ) {s = 9;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index47_5);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 47, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA61_eotS =
        "\13\uffff";
    static final String DFA61_eofS =
        "\13\uffff";
    static final String DFA61_minS =
        "\1\5\12\uffff";
    static final String DFA61_maxS =
        "\1\133\12\uffff";
    static final String DFA61_acceptS =
        "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12";
    static final String DFA61_specialS =
        "\13\uffff}>";
    static final String[] DFA61_transitionS = {
            "\5\1\7\uffff\1\2\20\uffff\1\3\7\uffff\1\12\33\uffff\3\3\1\4"+
            "\11\uffff\3\1\1\5\1\6\1\7\1\uffff\1\10\1\11",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA61_eot = DFA.unpackEncodedString(DFA61_eotS);
    static final short[] DFA61_eof = DFA.unpackEncodedString(DFA61_eofS);
    static final char[] DFA61_min = DFA.unpackEncodedStringToUnsignedChars(DFA61_minS);
    static final char[] DFA61_max = DFA.unpackEncodedStringToUnsignedChars(DFA61_maxS);
    static final short[] DFA61_accept = DFA.unpackEncodedString(DFA61_acceptS);
    static final short[] DFA61_special = DFA.unpackEncodedString(DFA61_specialS);
    static final short[][] DFA61_transition;

    static {
        int numStates = DFA61_transitionS.length;
        DFA61_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA61_transition[i] = DFA.unpackEncodedString(DFA61_transitionS[i]);
        }
    }

    class DFA61 extends DFA {

        public DFA61(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 61;
            this.eot = DFA61_eot;
            this.eof = DFA61_eof;
            this.min = DFA61_min;
            this.max = DFA61_max;
            this.accept = DFA61_accept;
            this.special = DFA61_special;
            this.transition = DFA61_transition;
        }
        public String getDescription() {
            return "3197:1: (this_XLiteral_0= ruleXLiteral | this_XParenthesizedExpression_1= ruleXParenthesizedExpression | this_XArray_2= ruleXArray | this_XDataFrameExpression_3= ruleXDataFrameExpression | this_XConstructionExpression_4= ruleXConstructionExpression | this_XInitObjectExpression_5= ruleXInitObjectExpression | this_XIfExpression_6= ruleXIfExpression | this_XWhileExpression_7= ruleXWhileExpression | this_XForExpression_8= ruleXForExpression | this_XFunctionDeclaration_9= ruleXFunctionDeclaration )";
        }
    }
    static final String DFA76_eotS =
        "\116\uffff";
    static final String DFA76_eofS =
        "\1\33\115\uffff";
    static final String DFA76_minS =
        "\1\4\32\0\63\uffff";
    static final String DFA76_maxS =
        "\1\133\32\0\63\uffff";
    static final String DFA76_acceptS =
        "\33\uffff\1\2\61\uffff\1\1";
    static final String DFA76_specialS =
        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"+
        "\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\30"+
        "\1\31\63\uffff}>";
    static final String[] DFA76_transitionS = {
            "\1\27\1\5\1\3\1\4\1\12\1\6\5\uffff\1\33\1\uffff\1\13\2\33\2"+
            "\uffff\14\33\1\15\2\33\1\uffff\4\33\1\26\1\uffff\14\33\1\2\10"+
            "\33\1\1\4\33\1\14\1\16\1\17\1\20\2\uffff\3\33\1\32\1\uffff\1"+
            "\30\1\31\1\11\1\7\1\10\1\21\1\22\1\23\1\33\1\24\1\25",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA76_eot = DFA.unpackEncodedString(DFA76_eotS);
    static final short[] DFA76_eof = DFA.unpackEncodedString(DFA76_eofS);
    static final char[] DFA76_min = DFA.unpackEncodedStringToUnsignedChars(DFA76_minS);
    static final char[] DFA76_max = DFA.unpackEncodedStringToUnsignedChars(DFA76_maxS);
    static final short[] DFA76_accept = DFA.unpackEncodedString(DFA76_acceptS);
    static final short[] DFA76_special = DFA.unpackEncodedString(DFA76_specialS);
    static final short[][] DFA76_transition;

    static {
        int numStates = DFA76_transitionS.length;
        DFA76_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA76_transition[i] = DFA.unpackEncodedString(DFA76_transitionS[i]);
        }
    }

    class DFA76 extends DFA {

        public DFA76(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 76;
            this.eot = DFA76_eot;
            this.eof = DFA76_eof;
            this.min = DFA76_min;
            this.max = DFA76_max;
            this.accept = DFA76_accept;
            this.special = DFA76_special;
            this.transition = DFA76_transition;
        }
        public String getDescription() {
            return "3812:2: ( ( ( ruleXExpression ) )=> (lv_value_2_0= ruleXExpression ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA76_1 = input.LA(1);

                         
                        int index76_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA76_2 = input.LA(1);

                         
                        int index76_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA76_3 = input.LA(1);

                         
                        int index76_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA76_4 = input.LA(1);

                         
                        int index76_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA76_5 = input.LA(1);

                         
                        int index76_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA76_6 = input.LA(1);

                         
                        int index76_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA76_7 = input.LA(1);

                         
                        int index76_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA76_8 = input.LA(1);

                         
                        int index76_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA76_9 = input.LA(1);

                         
                        int index76_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA76_10 = input.LA(1);

                         
                        int index76_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA76_11 = input.LA(1);

                         
                        int index76_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_11);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA76_12 = input.LA(1);

                         
                        int index76_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_12);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA76_13 = input.LA(1);

                         
                        int index76_13 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_13);
                        if ( s>=0 ) return s;
                        break;
                    case 13 : 
                        int LA76_14 = input.LA(1);

                         
                        int index76_14 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_14);
                        if ( s>=0 ) return s;
                        break;
                    case 14 : 
                        int LA76_15 = input.LA(1);

                         
                        int index76_15 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_15);
                        if ( s>=0 ) return s;
                        break;
                    case 15 : 
                        int LA76_16 = input.LA(1);

                         
                        int index76_16 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_16);
                        if ( s>=0 ) return s;
                        break;
                    case 16 : 
                        int LA76_17 = input.LA(1);

                         
                        int index76_17 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_17);
                        if ( s>=0 ) return s;
                        break;
                    case 17 : 
                        int LA76_18 = input.LA(1);

                         
                        int index76_18 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_18);
                        if ( s>=0 ) return s;
                        break;
                    case 18 : 
                        int LA76_19 = input.LA(1);

                         
                        int index76_19 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_19);
                        if ( s>=0 ) return s;
                        break;
                    case 19 : 
                        int LA76_20 = input.LA(1);

                         
                        int index76_20 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_20);
                        if ( s>=0 ) return s;
                        break;
                    case 20 : 
                        int LA76_21 = input.LA(1);

                         
                        int index76_21 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_21);
                        if ( s>=0 ) return s;
                        break;
                    case 21 : 
                        int LA76_22 = input.LA(1);

                         
                        int index76_22 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_22);
                        if ( s>=0 ) return s;
                        break;
                    case 22 : 
                        int LA76_23 = input.LA(1);

                         
                        int index76_23 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_23);
                        if ( s>=0 ) return s;
                        break;
                    case 23 : 
                        int LA76_24 = input.LA(1);

                         
                        int index76_24 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_24);
                        if ( s>=0 ) return s;
                        break;
                    case 24 : 
                        int LA76_25 = input.LA(1);

                         
                        int index76_25 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_25);
                        if ( s>=0 ) return s;
                        break;
                    case 25 : 
                        int LA76_26 = input.LA(1);

                         
                        int index76_26 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 27;}

                         
                        input.seek(index76_26);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 76, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA92_eotS =
        "\117\uffff";
    static final String DFA92_eofS =
        "\1\3\116\uffff";
    static final String DFA92_minS =
        "\1\4\2\0\114\uffff";
    static final String DFA92_maxS =
        "\1\133\2\0\114\uffff";
    static final String DFA92_acceptS =
        "\3\uffff\1\3\111\uffff\1\1\1\2";
    static final String DFA92_specialS =
        "\1\uffff\1\0\1\1\114\uffff}>";
    static final String[] DFA92_transitionS = {
            "\6\3\5\uffff\1\3\1\uffff\1\1\2\3\2\uffff\14\3\1\2\2\3\1\uffff"+
            "\5\3\1\uffff\36\3\2\uffff\4\3\1\uffff\13\3",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA92_eot = DFA.unpackEncodedString(DFA92_eotS);
    static final short[] DFA92_eof = DFA.unpackEncodedString(DFA92_eofS);
    static final char[] DFA92_min = DFA.unpackEncodedStringToUnsignedChars(DFA92_minS);
    static final char[] DFA92_max = DFA.unpackEncodedStringToUnsignedChars(DFA92_maxS);
    static final short[] DFA92_accept = DFA.unpackEncodedString(DFA92_acceptS);
    static final short[] DFA92_special = DFA.unpackEncodedString(DFA92_specialS);
    static final short[][] DFA92_transition;

    static {
        int numStates = DFA92_transitionS.length;
        DFA92_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA92_transition[i] = DFA.unpackEncodedString(DFA92_transitionS[i]);
        }
    }

    class DFA92 extends DFA {

        public DFA92(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 92;
            this.eot = DFA92_eot;
            this.eof = DFA92_eof;
            this.min = DFA92_min;
            this.max = DFA92_max;
            this.accept = DFA92_accept;
            this.special = DFA92_special;
            this.transition = DFA92_transition;
        }
        public String getDescription() {
            return "4391:3: ( ( ( ( ( '(' ) )=> (lv_operatorCall_3_0= '(' ) ) ( ( (lv_params_4_0= ruleCallParameter ) ) (otherlv_5= ',' ( (lv_params_6_0= ruleCallParameter ) ) )* )? otherlv_7= ')' ) | ( ( ( ( '[' ) )=> (lv_indexCall_8_0= '[' ) ) ( ( (lv_params_9_0= ruleCallParameter ) ) (otherlv_10= ',' ( (lv_params_11_0= ruleCallParameter ) ) )* )? otherlv_12= ']' ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA92_1 = input.LA(1);

                         
                        int index92_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred22_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 3;}

                         
                        input.seek(index92_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA92_2 = input.LA(1);

                         
                        int index92_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred23_InternalUnicornDSL()) ) {s = 78;}

                        else if ( (true) ) {s = 3;}

                         
                        input.seek(index92_2);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 92, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA100_eotS =
        "\117\uffff";
    static final String DFA100_eofS =
        "\1\3\116\uffff";
    static final String DFA100_minS =
        "\1\4\2\0\114\uffff";
    static final String DFA100_maxS =
        "\1\133\2\0\114\uffff";
    static final String DFA100_acceptS =
        "\3\uffff\1\3\111\uffff\1\1\1\2";
    static final String DFA100_specialS =
        "\1\uffff\1\0\1\1\114\uffff}>";
    static final String[] DFA100_transitionS = {
            "\6\3\5\uffff\1\3\1\uffff\1\1\2\3\2\uffff\14\3\1\2\2\3\1\uffff"+
            "\5\3\1\uffff\36\3\2\uffff\4\3\1\uffff\13\3",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA100_eot = DFA.unpackEncodedString(DFA100_eotS);
    static final short[] DFA100_eof = DFA.unpackEncodedString(DFA100_eofS);
    static final char[] DFA100_min = DFA.unpackEncodedStringToUnsignedChars(DFA100_minS);
    static final char[] DFA100_max = DFA.unpackEncodedStringToUnsignedChars(DFA100_maxS);
    static final short[] DFA100_accept = DFA.unpackEncodedString(DFA100_acceptS);
    static final short[] DFA100_special = DFA.unpackEncodedString(DFA100_specialS);
    static final short[][] DFA100_transition;

    static {
        int numStates = DFA100_transitionS.length;
        DFA100_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA100_transition[i] = DFA.unpackEncodedString(DFA100_transitionS[i]);
        }
    }

    class DFA100 extends DFA {

        public DFA100(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 100;
            this.eot = DFA100_eot;
            this.eof = DFA100_eof;
            this.min = DFA100_min;
            this.max = DFA100_max;
            this.accept = DFA100_accept;
            this.special = DFA100_special;
            this.transition = DFA100_transition;
        }
        public String getDescription() {
            return "4610:3: ( ( ( ( ( '(' ) )=> (lv_operatorCall_4_0= '(' ) ) ( ( (lv_params_5_0= ruleCallParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleCallParameter ) ) )* )? otherlv_8= ')' ) | ( ( ( ( '[' ) )=> (lv_indexCall_9_0= '[' ) ) ( ( (lv_params_10_0= ruleCallParameter ) ) (otherlv_11= ',' ( (lv_params_12_0= ruleCallParameter ) ) )* )? otherlv_13= ']' ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA100_1 = input.LA(1);

                         
                        int index100_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred24_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 3;}

                         
                        input.seek(index100_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA100_2 = input.LA(1);

                         
                        int index100_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred25_InternalUnicornDSL()) ) {s = 78;}

                        else if ( (true) ) {s = 3;}

                         
                        input.seek(index100_2);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 100, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA110_eotS =
        "\116\uffff";
    static final String DFA110_eofS =
        "\1\2\115\uffff";
    static final String DFA110_minS =
        "\1\4\1\0\114\uffff";
    static final String DFA110_maxS =
        "\1\133\1\0\114\uffff";
    static final String DFA110_acceptS =
        "\2\uffff\1\2\112\uffff\1\1";
    static final String DFA110_specialS =
        "\1\uffff\1\0\114\uffff}>";
    static final String[] DFA110_transitionS = {
            "\6\2\5\uffff\1\2\1\uffff\3\2\2\uffff\4\2\1\1\12\2\1\uffff\5"+
            "\2\1\uffff\36\2\2\uffff\4\2\1\uffff\13\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA110_eot = DFA.unpackEncodedString(DFA110_eotS);
    static final short[] DFA110_eof = DFA.unpackEncodedString(DFA110_eofS);
    static final char[] DFA110_min = DFA.unpackEncodedStringToUnsignedChars(DFA110_minS);
    static final char[] DFA110_max = DFA.unpackEncodedStringToUnsignedChars(DFA110_maxS);
    static final short[] DFA110_accept = DFA.unpackEncodedString(DFA110_acceptS);
    static final short[] DFA110_special = DFA.unpackEncodedString(DFA110_specialS);
    static final short[][] DFA110_transition;

    static {
        int numStates = DFA110_transitionS.length;
        DFA110_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA110_transition[i] = DFA.unpackEncodedString(DFA110_transitionS[i]);
        }
    }

    class DFA110 extends DFA {

        public DFA110(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 110;
            this.eot = DFA110_eot;
            this.eof = DFA110_eof;
            this.min = DFA110_min;
            this.max = DFA110_max;
            this.accept = DFA110_accept;
            this.special = DFA110_special;
            this.transition = DFA110_transition;
        }
        public String getDescription() {
            return "5232:1: ( ( ( '{' )=>otherlv_8= '{' ) ( (lv_initExps_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_initExps_11_0= ruleXExpression ) ) )* otherlv_12= '}' )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA110_1 = input.LA(1);

                         
                        int index110_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred27_InternalUnicornDSL()) ) {s = 77;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index110_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 110, _s, input);
            error(nvae);
            throw nvae;
        }
    }
 

    public static final BitSet FOLLOW_ruleModule_in_entryRuleModule75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModule85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUnicornLibrary_in_ruleModule132 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUnicornLanguage_in_ruleModule159 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUnicornConversion_in_ruleModule186 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUnicornLibrary_in_entryRuleUnicornLibrary221 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUnicornLibrary231 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_ruleUnicornLibrary268 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleUnicornLibrary285 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleUnicornLibrary302 = new BitSet(new long[]{0x0000074173200002L});
    public static final BitSet FOLLOW_ruleIncludeStatement_in_ruleUnicornLibrary323 = new BitSet(new long[]{0x0000074173200002L});
    public static final BitSet FOLLOW_ruleImportStatement_in_ruleUnicornLibrary346 = new BitSet(new long[]{0x0000074173000002L});
    public static final BitSet FOLLOW_ruleIdentifiedElement_in_ruleUnicornLibrary373 = new BitSet(new long[]{0x0000074173000002L});
    public static final BitSet FOLLOW_ruleCommaEndedIdentifiedElement_in_ruleUnicornLibrary400 = new BitSet(new long[]{0x0000074173000002L});
    public static final BitSet FOLLOW_ruleNamespace_in_ruleUnicornLibrary427 = new BitSet(new long[]{0x0000074173000002L});
    public static final BitSet FOLLOW_ruleUnicornLanguage_in_entryRuleUnicornLanguage465 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUnicornLanguage475 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_ruleUnicornLanguage512 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleUnicornLanguage529 = new BitSet(new long[]{0x0000000000028000L});
    public static final BitSet FOLLOW_17_in_ruleUnicornLanguage547 = new BitSet(new long[]{0x0000000370010010L});
    public static final BitSet FOLLOW_ruleNamedProperty_in_ruleUnicornLanguage568 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_18_in_ruleUnicornLanguage581 = new BitSet(new long[]{0x0000000370010010L});
    public static final BitSet FOLLOW_ruleNamedProperty_in_ruleUnicornLanguage602 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_19_in_ruleUnicornLanguage616 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleUnicornLanguage630 = new BitSet(new long[]{0x0000074173200002L});
    public static final BitSet FOLLOW_ruleIncludeStatement_in_ruleUnicornLanguage651 = new BitSet(new long[]{0x0000074173200002L});
    public static final BitSet FOLLOW_ruleImportStatement_in_ruleUnicornLanguage674 = new BitSet(new long[]{0x0000074173000002L});
    public static final BitSet FOLLOW_ruleIdentifiedElement_in_ruleUnicornLanguage701 = new BitSet(new long[]{0x0000074173000002L});
    public static final BitSet FOLLOW_ruleCommaEndedIdentifiedElement_in_ruleUnicornLanguage728 = new BitSet(new long[]{0x0000074173000002L});
    public static final BitSet FOLLOW_ruleNamespace_in_ruleUnicornLanguage755 = new BitSet(new long[]{0x0000074173000002L});
    public static final BitSet FOLLOW_ruleUnicornConversion_in_entryRuleUnicornConversion793 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUnicornConversion803 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_ruleUnicornConversion840 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleUnicornConversion857 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleUnicornConversion874 = new BitSet(new long[]{0x0000074373200002L});
    public static final BitSet FOLLOW_ruleIncludeStatement_in_ruleUnicornConversion895 = new BitSet(new long[]{0x0000074373200002L});
    public static final BitSet FOLLOW_ruleImportStatement_in_ruleUnicornConversion918 = new BitSet(new long[]{0x0000074373000002L});
    public static final BitSet FOLLOW_ruleXFunctionDeclaration_in_ruleUnicornConversion947 = new BitSet(new long[]{0x0000074373000002L});
    public static final BitSet FOLLOW_ruleConversionScheme_in_ruleUnicornConversion966 = new BitSet(new long[]{0x0000074373000002L});
    public static final BitSet FOLLOW_ruleCommaEndedIdentifiedElement_in_ruleUnicornConversion996 = new BitSet(new long[]{0x0000074373000002L});
    public static final BitSet FOLLOW_ruleNamespace_in_ruleUnicornConversion1023 = new BitSet(new long[]{0x0000074373000002L});
    public static final BitSet FOLLOW_ruleIncludeStatement_in_entryRuleIncludeStatement1061 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIncludeStatement1071 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_ruleIncludeStatement1108 = new BitSet(new long[]{0x0000000370410030L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleIncludeStatement1128 = new BitSet(new long[]{0x0000000000008002L});
    public static final BitSet FOLLOW_ruleDotQualifiedName_in_ruleIncludeStatement1152 = new BitSet(new long[]{0x0000000000008002L});
    public static final BitSet FOLLOW_22_in_ruleIncludeStatement1180 = new BitSet(new long[]{0x0000000370010030L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleIncludeStatement1212 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_ruleDotQualifiedName_in_ruleIncludeStatement1236 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleIncludeStatement1251 = new BitSet(new long[]{0x0000000000008002L});
    public static final BitSet FOLLOW_15_in_ruleIncludeStatement1266 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImportStatement_in_entryRuleImportStatement1304 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImportStatement1314 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_ruleImportStatement1351 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleImportStatement1370 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_ruleQualifiedNameStar_in_ruleImportStatement1394 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleImportStatement1409 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamespace_in_entryRuleNamespace1445 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNamespace1455 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_ruleNamespace1492 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleNamespace1509 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleNamespace1526 = new BitSet(new long[]{0x000007417B000000L});
    public static final BitSet FOLLOW_ruleImportStatement_in_ruleNamespace1548 = new BitSet(new long[]{0x000007417B000000L});
    public static final BitSet FOLLOW_ruleIdentifiedElement_in_ruleNamespace1575 = new BitSet(new long[]{0x000007417B000000L});
    public static final BitSet FOLLOW_ruleCommaEndedIdentifiedElement_in_ruleNamespace1602 = new BitSet(new long[]{0x000007417B000000L});
    public static final BitSet FOLLOW_ruleNamespace_in_ruleNamespace1629 = new BitSet(new long[]{0x000007417B000000L});
    public static final BitSet FOLLOW_27_in_ruleNamespace1651 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIdentifiedElement_in_entryRuleIdentifiedElement1688 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIdentifiedElement1698 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXFunctionDeclaration_in_ruleIdentifiedElement1745 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLanguageElement_in_ruleIdentifiedElement1772 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTheme_in_ruleIdentifiedElement1799 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLanguageElement_in_entryRuleLanguageElement1834 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLanguageElement1844 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_ruleLanguageElement1898 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_29_in_ruleLanguageElement1927 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_30_in_ruleLanguageElement1956 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleLanguageElement1989 = new BitSet(new long[]{0x0000000084000000L});
    public static final BitSet FOLLOW_31_in_ruleLanguageElement2007 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleLanguageElement2030 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleLanguageElement2044 = new BitSet(new long[]{0x0000002378010010L});
    public static final BitSet FOLLOW_ruleNamedProperty_in_ruleLanguageElement2068 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_ruleElementField_in_ruleLanguageElement2087 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleLanguageElement2102 = new BitSet(new long[]{0x0000002378010010L});
    public static final BitSet FOLLOW_27_in_ruleLanguageElement2116 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTheme_in_entryRuleTheme2152 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTheme2162 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_ruleTheme2214 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTheme2244 = new BitSet(new long[]{0x0000000084000000L});
    public static final BitSet FOLLOW_31_in_ruleTheme2262 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleTheme2285 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleTheme2299 = new BitSet(new long[]{0x0000042378010010L});
    public static final BitSet FOLLOW_ruleNamedProperty_in_ruleTheme2324 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_ruleElementField_in_ruleTheme2343 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleTheme2358 = new BitSet(new long[]{0x0000042378010010L});
    public static final BitSet FOLLOW_ruleTheme_in_ruleTheme2386 = new BitSet(new long[]{0x0000042378010010L});
    public static final BitSet FOLLOW_27_in_ruleTheme2400 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConversionScheme_in_entryRuleConversionScheme2436 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConversionScheme2446 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_ruleConversionScheme2498 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleConversionScheme2528 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleConversionScheme2545 = new BitSet(new long[]{0x0000002378010010L});
    public static final BitSet FOLLOW_ruleNamedProperty_in_ruleConversionScheme2569 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_ruleElementField_in_ruleConversionScheme2588 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleConversionScheme2603 = new BitSet(new long[]{0x0000002378010010L});
    public static final BitSet FOLLOW_27_in_ruleConversionScheme2617 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamedProperty_in_entryRuleNamedProperty2653 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNamedProperty2663 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDotQualifiedName_in_ruleNamedProperty2718 = new BitSet(new long[]{0x0000001400000000L});
    public static final BitSet FOLLOW_34_in_ruleNamedProperty2731 = new BitSet(new long[]{0x0000000370010010L});
    public static final BitSet FOLLOW_ruleElementPropertyTag_in_ruleNamedProperty2752 = new BitSet(new long[]{0x0000000800040000L});
    public static final BitSet FOLLOW_18_in_ruleNamedProperty2765 = new BitSet(new long[]{0x0000000370010010L});
    public static final BitSet FOLLOW_ruleElementPropertyTag_in_ruleNamedProperty2786 = new BitSet(new long[]{0x0000000800040000L});
    public static final BitSet FOLLOW_35_in_ruleNamedProperty2800 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_36_in_ruleNamedProperty2814 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleNamedProperty2835 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElementField_in_entryRuleElementField2871 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleElementField2881 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_ruleElementField2933 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleElementField2963 = new BitSet(new long[]{0x0000000480000000L});
    public static final BitSet FOLLOW_34_in_ruleElementField2981 = new BitSet(new long[]{0x0000000370010010L});
    public static final BitSet FOLLOW_ruleElementPropertyTag_in_ruleElementField3002 = new BitSet(new long[]{0x0000000800040000L});
    public static final BitSet FOLLOW_18_in_ruleElementField3015 = new BitSet(new long[]{0x0000000370010010L});
    public static final BitSet FOLLOW_ruleElementPropertyTag_in_ruleElementField3036 = new BitSet(new long[]{0x0000000800040000L});
    public static final BitSet FOLLOW_35_in_ruleElementField3050 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_ruleElementField3064 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleElementField3081 = new BitSet(new long[]{0x0000001000000002L});
    public static final BitSet FOLLOW_36_in_ruleElementField3099 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleElementField3120 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElementPropertyTag_in_entryRuleElementPropertyTag3158 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleElementPropertyTag3168 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDotQualifiedName_in_ruleElementPropertyTag3223 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_ruleElementPropertyTag3235 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleElementPropertyTag3256 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCommaEndedIdentifiedElement_in_entryRuleCommaEndedIdentifiedElement3292 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCommaEndedIdentifiedElement3302 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXVariableDeclaration_in_ruleCommaEndedIdentifiedElement3350 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_ruleXJavaTypeImport_in_ruleCommaEndedIdentifiedElement3377 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleCommaEndedIdentifiedElement3389 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXJavaTypeImport_in_entryRuleXJavaTypeImport3425 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXJavaTypeImport3435 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_38_in_ruleXJavaTypeImport3481 = new BitSet(new long[]{0x0000000370010030L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleXJavaTypeImport3500 = new BitSet(new long[]{0x0000008000000000L});
    public static final BitSet FOLLOW_ruleDotQualifiedName_in_ruleXJavaTypeImport3524 = new BitSet(new long[]{0x0000008000000000L});
    public static final BitSet FOLLOW_39_in_ruleXJavaTypeImport3539 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleXJavaTypeImport3556 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXVariableDeclaration_in_entryRuleXVariableDeclaration3597 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXVariableDeclaration3607 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_ruleXVariableDeclaration3655 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleXVariableDeclaration3672 = new BitSet(new long[]{0x0000001000000002L});
    public static final BitSet FOLLOW_36_in_ruleXVariableDeclaration3698 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXVariableDeclaration3720 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_41_in_ruleXVariableDeclaration3748 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleXVariableDeclaration3778 = new BitSet(new long[]{0x0000001000000002L});
    public static final BitSet FOLLOW_36_in_ruleXVariableDeclaration3804 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXVariableDeclaration3826 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXFunctionDeclaration_in_entryRuleXFunctionDeclaration3866 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXFunctionDeclaration3876 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_42_in_ruleXFunctionDeclaration3930 = new BitSet(new long[]{0x0000000000020010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleXFunctionDeclaration3948 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleXFunctionDeclaration3966 = new BitSet(new long[]{0x0000080000080010L});
    public static final BitSet FOLLOW_ruleFunctionArgument_in_ruleXFunctionDeclaration3988 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_18_in_ruleXFunctionDeclaration4001 = new BitSet(new long[]{0x0000080000000010L});
    public static final BitSet FOLLOW_ruleFunctionArgument_in_ruleXFunctionDeclaration4022 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_19_in_ruleXFunctionDeclaration4038 = new BitSet(new long[]{0x01000704040203F0L,0x000000000DFEF3C2L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_ruleXFunctionDeclaration4059 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFunctionArgument_in_entryRuleFunctionArgument4095 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFunctionArgument4105 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFunctionArgument4158 = new BitSet(new long[]{0x0000001000000002L});
    public static final BitSet FOLLOW_36_in_ruleFunctionArgument4176 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleFunctionArgument4197 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_ruleFunctionArgument4224 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpression_in_entryRuleXExpression4274 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXExpression4284 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAssignExpression_in_ruleXExpression4331 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXStrictBlockExpression_in_ruleXExpression4358 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAssignExpression_in_entryRuleXAssignExpression4393 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXAssignExpression4403 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXBoolExpression_in_ruleXAssignExpression4450 = new BitSet(new long[]{0x0000F01000000002L});
    public static final BitSet FOLLOW_36_in_ruleXAssignExpression4572 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_44_in_ruleXAssignExpression4601 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_45_in_ruleXAssignExpression4630 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_46_in_ruleXAssignExpression4659 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_47_in_ruleXAssignExpression4688 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleXBoolExpression_in_ruleXAssignExpression4725 = new BitSet(new long[]{0x0000F01000000002L});
    public static final BitSet FOLLOW_ruleXBoolExpression_in_entryRuleXBoolExpression4764 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXBoolExpression4774 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXComparativeExpression_in_ruleXBoolExpression4821 = new BitSet(new long[]{0x0003000000000002L});
    public static final BitSet FOLLOW_ruleBoolOps_in_ruleXBoolExpression4878 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleXComparativeExpression_in_ruleXBoolExpression4899 = new BitSet(new long[]{0x0003000000000002L});
    public static final BitSet FOLLOW_ruleBoolOps_in_entryRuleBoolOps4939 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBoolOps4950 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_48_in_ruleBoolOps4988 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleBoolOps5007 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXComparativeExpression_in_entryRuleXComparativeExpression5047 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXComparativeExpression5057 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAddExpression_in_ruleXComparativeExpression5104 = new BitSet(new long[]{0x007C000000C00002L});
    public static final BitSet FOLLOW_ruleCompareOps_in_ruleXComparativeExpression5161 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleXAddExpression_in_ruleXComparativeExpression5182 = new BitSet(new long[]{0x007C000000C00002L});
    public static final BitSet FOLLOW_ruleCompareOps_in_entryRuleCompareOps5222 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCompareOps5233 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_ruleCompareOps5271 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_ruleCompareOps5290 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_50_in_ruleCompareOps5309 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_51_in_ruleCompareOps5328 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_52_in_ruleCompareOps5347 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_53_in_ruleCompareOps5366 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_54_in_ruleCompareOps5385 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAddExpression_in_entryRuleXAddExpression5425 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXAddExpression5435 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXMultExpression_in_ruleXAddExpression5482 = new BitSet(new long[]{0x0780000000000002L});
    public static final BitSet FOLLOW_ruleAddOps_in_ruleXAddExpression5539 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleXMultExpression_in_ruleXAddExpression5560 = new BitSet(new long[]{0x0780000000000002L});
    public static final BitSet FOLLOW_ruleAddOps_in_entryRuleAddOps5600 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAddOps5611 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_55_in_ruleAddOps5649 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_56_in_ruleAddOps5668 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_57_in_ruleAddOps5687 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_58_in_ruleAddOps5706 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXMultExpression_in_entryRuleXMultExpression5746 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXMultExpression5756 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXCastExpression_in_ruleXMultExpression5803 = new BitSet(new long[]{0xF800000000000002L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleMultOps_in_ruleXMultExpression5860 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleXCastExpression_in_ruleXMultExpression5881 = new BitSet(new long[]{0xF800000000000002L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleMultOps_in_entryRuleMultOps5921 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMultOps5932 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_59_in_ruleMultOps5970 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_60_in_ruleMultOps5989 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_61_in_ruleMultOps6008 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_62_in_ruleMultOps6027 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_63_in_ruleMultOps6046 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_64_in_ruleMultOps6065 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXCastExpression_in_entryRuleXCastExpression6105 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXCastExpression6115 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXUnaryTerm_in_ruleXCastExpression6162 = new BitSet(new long[]{0x0000008000000002L});
    public static final BitSet FOLLOW_39_in_ruleXCastExpression6207 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXCastExpression6230 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXUnaryTerm_in_entryRuleXUnaryTerm6269 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXUnaryTerm6279 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_65_in_ruleXUnaryTerm6334 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_56_in_ruleXUnaryTerm6363 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleXMemberTerm_in_ruleXUnaryTerm6400 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXMemberTerm_in_ruleXUnaryTerm6430 = new BitSet(new long[]{0x0000000000000002L,0x000000000000000CL});
    public static final BitSet FOLLOW_66_in_ruleXUnaryTerm6501 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_67_in_ruleXUnaryTerm6530 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXMemberTerm_in_entryRuleXMemberTerm6586 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXMemberTerm6596 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXTerm_in_ruleXMemberTerm6644 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000030L});
    public static final BitSet FOLLOW_ruleXIdentifiedElementFeatureCall_in_ruleXMemberTerm6671 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000030L});
    public static final BitSet FOLLOW_68_in_ruleXMemberTerm6738 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_69_in_ruleXMemberTerm6762 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleXFeatureCall_in_ruleXMemberTerm6797 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000030L});
    public static final BitSet FOLLOW_ruleXTerm_in_entryRuleXTerm6836 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXTerm6846 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXLiteral_in_ruleXTerm6893 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_ruleXTerm6920 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXArray_in_ruleXTerm6947 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXDataFrameExpression_in_ruleXTerm6974 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXConstructionExpression_in_ruleXTerm7001 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXInitObjectExpression_in_ruleXTerm7028 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXIfExpression_in_ruleXTerm7055 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXWhileExpression_in_ruleXTerm7082 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXForExpression_in_ruleXTerm7109 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXFunctionDeclaration_in_ruleXTerm7136 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXArray_in_entryRuleXArray7171 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXArray7181 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_70_in_ruleXArray7234 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleXArray7260 = new BitSet(new long[]{0x0100040C000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXArray7282 = new BitSet(new long[]{0x0000000800040000L});
    public static final BitSet FOLLOW_18_in_ruleXArray7295 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXArray7316 = new BitSet(new long[]{0x0000000800040000L});
    public static final BitSet FOLLOW_35_in_ruleXArray7332 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_71_in_ruleXArray7398 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_72_in_ruleXArray7429 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleXArray7443 = new BitSet(new long[]{0x00000003780103F0L,0x0000000000380000L});
    public static final BitSet FOLLOW_ruleXArrayKey_in_ruleXArray7465 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_36_in_ruleXArray7485 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXArray7507 = new BitSet(new long[]{0x0000000008040000L});
    public static final BitSet FOLLOW_18_in_ruleXArray7520 = new BitSet(new long[]{0x00000003700103F0L,0x0000000000380000L});
    public static final BitSet FOLLOW_ruleXArrayKey_in_ruleXArray7541 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_36_in_ruleXArray7561 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXArray7583 = new BitSet(new long[]{0x0000000008040000L});
    public static final BitSet FOLLOW_27_in_ruleXArray7599 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXArrayKey_in_entryRuleXArrayKey7636 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXArrayKey7646 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDotQualifiedName_in_ruleXArrayKey7702 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXLiteral_in_ruleXArrayKey7731 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXDataFrameExpression_in_entryRuleXDataFrameExpression7766 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXDataFrameExpression7776 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_73_in_ruleXDataFrameExpression7822 = new BitSet(new long[]{0x0000000404000000L});
    public static final BitSet FOLLOW_34_in_ruleXDataFrameExpression7835 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000C00L});
    public static final BitSet FOLLOW_74_in_ruleXDataFrameExpression7855 = new BitSet(new long[]{0x0000000800040000L});
    public static final BitSet FOLLOW_18_in_ruleXDataFrameExpression7881 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_75_in_ruleXDataFrameExpression7899 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_75_in_ruleXDataFrameExpression7940 = new BitSet(new long[]{0x0000000800040000L});
    public static final BitSet FOLLOW_18_in_ruleXDataFrameExpression7966 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
    public static final BitSet FOLLOW_74_in_ruleXDataFrameExpression7984 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_ruleXDataFrameExpression8013 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleXDataFrameExpression8027 = new BitSet(new long[]{0x0000000008000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleXDataFrameExpression8045 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_36_in_ruleXDataFrameExpression8062 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXDataFrameExpression8083 = new BitSet(new long[]{0x0000000008040000L});
    public static final BitSet FOLLOW_18_in_ruleXDataFrameExpression8096 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleXDataFrameExpression8113 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_36_in_ruleXDataFrameExpression8130 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXDataFrameExpression8151 = new BitSet(new long[]{0x0000000008040000L});
    public static final BitSet FOLLOW_27_in_ruleXDataFrameExpression8167 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXReturnStatement_in_entryRuleXReturnStatement8203 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXReturnStatement8213 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_76_in_ruleXReturnStatement8265 = new BitSet(new long[]{0x01000404000203F2L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXReturnStatement8309 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXBreakContinueExpression_in_entryRuleXBreakContinueExpression8346 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXBreakContinueExpression8356 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_77_in_ruleXBreakContinueExpression8409 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_78_in_ruleXBreakContinueExpression8447 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStatement_in_entryRuleStatement8496 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStatement8506 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXVariableDeclaration_in_ruleStatement8554 = new BitSet(new long[]{0x0000000000008002L});
    public static final BitSet FOLLOW_ruleXReturnStatement_in_ruleStatement8581 = new BitSet(new long[]{0x0000000000008002L});
    public static final BitSet FOLLOW_ruleXBreakContinueExpression_in_ruleStatement8608 = new BitSet(new long[]{0x0000000000008002L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleStatement8635 = new BitSet(new long[]{0x0000000000008002L});
    public static final BitSet FOLLOW_15_in_ruleStatement8655 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXStrictBlockExpression_in_entryRuleXStrictBlockExpression8693 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXStrictBlockExpression8703 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_79_in_ruleXStrictBlockExpression8749 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleXStrictBlockExpression8769 = new BitSet(new long[]{0x01000704080203F0L,0x000000000DFEF3C2L});
    public static final BitSet FOLLOW_ruleStatement_in_ruleXStrictBlockExpression8791 = new BitSet(new long[]{0x01000704080203F0L,0x000000000DFEF3C2L});
    public static final BitSet FOLLOW_27_in_ruleXStrictBlockExpression8804 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_entryRuleXBlockExpression8840 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXBlockExpression8850 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStatement_in_ruleXBlockExpression8906 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_ruleXBlockExpression8935 = new BitSet(new long[]{0x01000704080203F0L,0x000000000DFEF3C2L});
    public static final BitSet FOLLOW_ruleStatement_in_ruleXBlockExpression8956 = new BitSet(new long[]{0x01000704080203F0L,0x000000000DFEF3C2L});
    public static final BitSet FOLLOW_27_in_ruleXBlockExpression8977 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXBreakableBlockExpression_in_entryRuleXBreakableBlockExpression9015 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXBreakableBlockExpression9025 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStatement_in_ruleXBreakableBlockExpression9081 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_ruleXBreakableBlockExpression9110 = new BitSet(new long[]{0x01000704080203F0L,0x000000000DFEF3C2L});
    public static final BitSet FOLLOW_ruleStatement_in_ruleXBreakableBlockExpression9131 = new BitSet(new long[]{0x01000704080203F0L,0x000000000DFEF3C2L});
    public static final BitSet FOLLOW_27_in_ruleXBreakableBlockExpression9152 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_entryRuleXParenthesizedExpression9190 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXParenthesizedExpression9200 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_ruleXParenthesizedExpression9246 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXNameExpression_in_ruleXParenthesizedExpression9267 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_18_in_ruleXParenthesizedExpression9280 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXNameExpression_in_ruleXParenthesizedExpression9301 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_19_in_ruleXParenthesizedExpression9315 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXNameExpression_in_entryRuleXNameExpression9351 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXNameExpression9361 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleXNameExpression9413 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_ruleXNameExpression9430 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXNameExpression9451 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXNameExpression9480 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXFeatureCall_in_entryRuleXFeatureCall9515 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXFeatureCall9525 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXFeatureCall9580 = new BitSet(new long[]{0x0000000400020002L,0x0000000000010000L});
    public static final BitSet FOLLOW_80_in_ruleXFeatureCall9613 = new BitSet(new long[]{0x0000000400020002L});
    public static final BitSet FOLLOW_17_in_ruleXFeatureCall9662 = new BitSet(new long[]{0x01000C04000A03F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleCallParameter_in_ruleXFeatureCall9697 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_18_in_ruleXFeatureCall9710 = new BitSet(new long[]{0x01000C04000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleCallParameter_in_ruleXFeatureCall9731 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_19_in_ruleXFeatureCall9747 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleXFeatureCall9788 = new BitSet(new long[]{0x01000C0C000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleCallParameter_in_ruleXFeatureCall9823 = new BitSet(new long[]{0x0000000800040000L});
    public static final BitSet FOLLOW_18_in_ruleXFeatureCall9836 = new BitSet(new long[]{0x01000C04000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleCallParameter_in_ruleXFeatureCall9857 = new BitSet(new long[]{0x0000000800040000L});
    public static final BitSet FOLLOW_35_in_ruleXFeatureCall9873 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXIdentifiedElementFeatureCall_in_entryRuleXIdentifiedElementFeatureCall9912 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXIdentifiedElementFeatureCall9922 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXIdentifiedElementFeatureCall9980 = new BitSet(new long[]{0x0000000400020002L,0x0000000000010000L});
    public static final BitSet FOLLOW_81_in_ruleXIdentifiedElementFeatureCall10006 = new BitSet(new long[]{0x0000000400020002L,0x0000000000010000L});
    public static final BitSet FOLLOW_82_in_ruleXIdentifiedElementFeatureCall10035 = new BitSet(new long[]{0x0000000400020002L,0x0000000000010000L});
    public static final BitSet FOLLOW_80_in_ruleXIdentifiedElementFeatureCall10070 = new BitSet(new long[]{0x0000000400020002L});
    public static final BitSet FOLLOW_17_in_ruleXIdentifiedElementFeatureCall10119 = new BitSet(new long[]{0x01000C04000A03F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleCallParameter_in_ruleXIdentifiedElementFeatureCall10154 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_18_in_ruleXIdentifiedElementFeatureCall10167 = new BitSet(new long[]{0x01000C04000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleCallParameter_in_ruleXIdentifiedElementFeatureCall10188 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_19_in_ruleXIdentifiedElementFeatureCall10204 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleXIdentifiedElementFeatureCall10245 = new BitSet(new long[]{0x01000C0C000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleCallParameter_in_ruleXIdentifiedElementFeatureCall10280 = new BitSet(new long[]{0x0000000800040000L});
    public static final BitSet FOLLOW_18_in_ruleXIdentifiedElementFeatureCall10293 = new BitSet(new long[]{0x01000C04000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleCallParameter_in_ruleXIdentifiedElementFeatureCall10314 = new BitSet(new long[]{0x0000000800040000L});
    public static final BitSet FOLLOW_35_in_ruleXIdentifiedElementFeatureCall10330 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCallParameter_in_entryRuleCallParameter10369 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCallParameter10379 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleCallParameter10423 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_36_in_ruleCallParameter10448 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleXBoolExpression_in_ruleCallParameter10472 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_ruleCallParameter10497 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXLiteral_in_entryRuleXLiteral10546 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXLiteral10556 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXIntLiteral_in_ruleXLiteral10603 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXStringLiteral_in_ruleXLiteral10630 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXBoolLiteral_in_ruleXLiteral10657 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXNullLiteral_in_ruleXLiteral10684 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXFloatLiteral_in_ruleXLiteral10711 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXNullLiteral_in_entryRuleXNullLiteral10746 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXNullLiteral10756 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_83_in_ruleXNullLiteral10802 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXIntLiteral_in_entryRuleXIntLiteral10838 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXIntLiteral10848 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleXIntLiteral10901 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_HEX_in_ruleXIntLiteral10921 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXFloatLiteral_in_entryRuleXFloatLiteral10965 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXFloatLiteral10975 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_FLOAT_in_ruleXFloatLiteral11026 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXStringLiteral_in_entryRuleXStringLiteral11067 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXStringLiteral11077 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleXStringLiteral11130 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_VERBATIM_STRING_in_ruleXStringLiteral11150 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXBoolLiteral_in_entryRuleXBoolLiteral11194 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXBoolLiteral11204 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_84_in_ruleXBoolLiteral11257 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_85_in_ruleXBoolLiteral11288 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXConstructionExpression_in_entryRuleXConstructionExpression11325 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXConstructionExpression11335 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_86_in_ruleXConstructionExpression11381 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXConstructionExpression11404 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleXConstructionExpression11416 = new BitSet(new long[]{0x01000404000A03F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXConstructionExpression11438 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_18_in_ruleXConstructionExpression11451 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXConstructionExpression11472 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_19_in_ruleXConstructionExpression11488 = new BitSet(new long[]{0x0000000004000002L});
    public static final BitSet FOLLOW_26_in_ruleXConstructionExpression11509 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXConstructionExpression11531 = new BitSet(new long[]{0x0000000008040000L});
    public static final BitSet FOLLOW_18_in_ruleXConstructionExpression11544 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXConstructionExpression11565 = new BitSet(new long[]{0x0000000008040000L});
    public static final BitSet FOLLOW_27_in_ruleXConstructionExpression11579 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXInitObjectExpression_in_entryRuleXInitObjectExpression11617 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXInitObjectExpression11627 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_87_in_ruleXInitObjectExpression11673 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFF83C2L});
    public static final BitSet FOLLOW_80_in_ruleXInitObjectExpression11709 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXInitObjectExpression11745 = new BitSet(new long[]{0x01000704040203F0L,0x000000000DFEF3C2L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_ruleXInitObjectExpression11766 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXIfExpression_in_entryRuleXIfExpression11802 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXIfExpression11812 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_88_in_ruleXIfExpression11858 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleXIfExpression11870 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXIfExpression11891 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleXIfExpression11903 = new BitSet(new long[]{0x01000704040203F0L,0x000000000DFEF3C2L});
    public static final BitSet FOLLOW_ruleXBreakableBlockExpression_in_ruleXIfExpression11934 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000000L});
    public static final BitSet FOLLOW_89_in_ruleXIfExpression11955 = new BitSet(new long[]{0x01000704040203F0L,0x000000000DFEF3C2L});
    public static final BitSet FOLLOW_ruleXBreakableBlockExpression_in_ruleXIfExpression11977 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXWhileExpression_in_entryRuleXWhileExpression12015 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXWhileExpression12025 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_90_in_ruleXWhileExpression12071 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleXWhileExpression12083 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXWhileExpression12104 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleXWhileExpression12116 = new BitSet(new long[]{0x01000704040203F0L,0x000000000DFEF3C2L});
    public static final BitSet FOLLOW_ruleXBreakableBlockExpression_in_ruleXWhileExpression12137 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXForExpression_in_entryRuleXForExpression12173 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXForExpression12183 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_91_in_ruleXForExpression12229 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleXForExpression12241 = new BitSet(new long[]{0x01000604800283F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleXForControlVariable_in_ruleXForExpression12262 = new BitSet(new long[]{0x0000000080008000L});
    public static final BitSet FOLLOW_15_in_ruleXForExpression12277 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXForExpression12298 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleXForExpression12310 = new BitSet(new long[]{0x01000404000A03F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXForExpression12332 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_18_in_ruleXForExpression12345 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXForExpression12366 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_31_in_ruleXForExpression12396 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXForExpression12430 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleXForExpression12444 = new BitSet(new long[]{0x01000704040203F0L,0x000000000DFEF3C2L});
    public static final BitSet FOLLOW_ruleXBreakableBlockExpression_in_ruleXForExpression12465 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXForControlVariable_in_entryRuleXForControlVariable12501 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXForControlVariable12511 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_41_in_ruleXForControlVariable12565 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleXForControlVariable12595 = new BitSet(new long[]{0x0000001000000002L});
    public static final BitSet FOLLOW_ruleXIdentifiedElementFeatureCall_in_ruleXForControlVariable12628 = new BitSet(new long[]{0x0000001000000002L});
    public static final BitSet FOLLOW_36_in_ruleXForControlVariable12642 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE83C2L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXForControlVariable12663 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName12702 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName12713 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName12753 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
    public static final BitSet FOLLOW_92_in_ruleQualifiedName12772 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName12787 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
    public static final BitSet FOLLOW_ruleDotQualifiedName_in_entryRuleDotQualifiedName12835 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDotQualifiedName12846 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDotQualifiedName12887 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_16_in_ruleDotQualifiedName12911 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_28_in_ruleDotQualifiedName12930 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_29_in_ruleDotQualifiedName12949 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_32_in_ruleDotQualifiedName12968 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_30_in_ruleDotQualifiedName12987 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_33_in_ruleDotQualifiedName13006 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_68_in_ruleDotQualifiedName13030 = new BitSet(new long[]{0x0000000370010010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDotQualifiedName13047 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_16_in_ruleDotQualifiedName13071 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_28_in_ruleDotQualifiedName13090 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_29_in_ruleDotQualifiedName13109 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_32_in_ruleDotQualifiedName13128 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_30_in_ruleDotQualifiedName13147 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_33_in_ruleDotQualifiedName13166 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedNameStar_in_entryRuleQualifiedNameStar13210 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameStar13221 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleQualifiedNameStar13268 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
    public static final BitSet FOLLOW_93_in_ruleQualifiedNameStar13287 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_synpred1_InternalUnicornDSL1643 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_synpred2_InternalUnicornDSL3690 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_synpred3_InternalUnicornDSL3796 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_synpred5_InternalUnicornDSL4468 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleXBoolExpression_in_synpred5_InternalUnicornDSL4543 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBoolOps_in_synpred6_InternalUnicornDSL4839 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleXComparativeExpression_in_synpred6_InternalUnicornDSL4848 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCompareOps_in_synpred7_InternalUnicornDSL5122 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleXAddExpression_in_synpred7_InternalUnicornDSL5131 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAddOps_in_synpred8_InternalUnicornDSL5500 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleXMultExpression_in_synpred8_InternalUnicornDSL5509 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMultOps_in_synpred9_InternalUnicornDSL5821 = new BitSet(new long[]{0x01000404000203F0L,0x000000000DFE03C2L});
    public static final BitSet FOLLOW_ruleXCastExpression_in_synpred9_InternalUnicornDSL5830 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_39_in_synpred10_InternalUnicornDSL6177 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_synpred10_InternalUnicornDSL6186 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_synpred11_InternalUnicornDSL6448 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_68_in_synpred12_InternalUnicornDSL6688 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_69_in_synpred12_InternalUnicornDSL6702 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleXFeatureCall_in_synpred12_InternalUnicornDSL6716 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpression_in_synpred16_InternalUnicornDSL8292 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_synpred17_InternalUnicornDSL8647 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_synpred19_InternalUnicornDSL8969 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_synpred20_InternalUnicornDSL9144 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_80_in_synpred21_InternalUnicornDSL9595 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_synpred22_InternalUnicornDSL9644 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_synpred23_InternalUnicornDSL9770 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_synpred24_InternalUnicornDSL10101 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_synpred25_InternalUnicornDSL10227 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_synpred27_InternalUnicornDSL11501 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_80_in_synpred28_InternalUnicornDSL11689 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_89_in_synpred30_InternalUnicornDSL11947 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_68_in_synpred31_InternalUnicornDSL13021 = new BitSet(new long[]{0x0000000000000002L});

}